Fix re-arranging the *.ino/pde files when converting to *.cpp // Resolve #100

This commit is contained in:
Ivan Kravets
2015-03-20 21:55:08 +02:00
parent b4a253110d
commit a8a9451c73
2 changed files with 14 additions and 13 deletions

View File

@ -4,8 +4,8 @@ Release History
1.2.0 (2015-03-??) 1.2.0 (2015-03-??)
------------------ ------------------
* Initial support of `mbed <http://docs.platformio.org/en/latest/frameworks/mbed.html>`__ * Added full support of `mbed <http://docs.platformio.org/en/latest/frameworks/mbed.html>`__
framework (only core SDK) framework including libraries: *RTOS, Ethernet, DSP, FAT, USB*.
* Added `freescalekinetis <http://docs.platformio.org/en/latest/platforms/freescalekinetis.html>`_ * Added `freescalekinetis <http://docs.platformio.org/en/latest/platforms/freescalekinetis.html>`_
development platform with Freescale Kinetis Freedom boards development platform with Freescale Kinetis Freedom boards
* Added `nordicnrf51 <http://docs.platformio.org/en/latest/platforms/nordicnrf51.html>`_ * Added `nordicnrf51 <http://docs.platformio.org/en/latest/platforms/nordicnrf51.html>`_
@ -26,8 +26,12 @@ Release History
builder (`issue #105 <https://github.com/ivankravets/platformio/issues/105>`_) builder (`issue #105 <https://github.com/ivankravets/platformio/issues/105>`_)
* Renamed ``stm32`` development platform to * Renamed ``stm32`` development platform to
`ststm32 <http://docs.platformio.org/en/latest/platforms/ststm32.html>`__ `ststm32 <http://docs.platformio.org/en/latest/platforms/ststm32.html>`__
* Renamed ``opencm3`` framework to
`libopencm3 <http://docs.platformio.org/en/latest/frameworks/libopencm3.html>`__
* Fixed uploading for `atmelsam <http://docs.platformio.org/en/latest/platforms/atmelsam.html>`__ * Fixed uploading for `atmelsam <http://docs.platformio.org/en/latest/platforms/atmelsam.html>`__
development platform development platform
* Fixed re-arranging the ``*.ino/pde`` files when converting to ``*.cpp``
(`issue #100 <https://github.com/ivankravets/platformio/issues/100>`_)
1.1.0 (2015-03-05) 1.1.0 (2015-03-05)
------------------ ------------------

View File

@ -176,7 +176,11 @@ def BuildDependentLibraries(env, src_dir): # pylint: disable=R0914
for ld in listdir(lsd_dir): for ld in listdir(lsd_dir):
inc_path = normpath(join(lsd_dir, ld, self.name)) inc_path = normpath(join(lsd_dir, ld, self.name))
lib_dir = inc_path[:inc_path.index(sep, len(lsd_dir) + 1)] try:
lib_dir = inc_path[:inc_path.index(
sep, len(lsd_dir) + 1)]
except ValueError:
continue
lib_name = basename(lib_dir) lib_name = basename(lib_dir)
# ignore user's specified libs # ignore user's specified libs
@ -284,9 +288,6 @@ def ConvertInoToCpp(env):
continue continue
ino_contents = item.get_text_contents() ino_contents = item.get_text_contents()
re_includes = re.compile(r"^(#include\s+(?:\<|\")[^\r\n]+)",
re.M | re.I)
includes = re_includes.findall(ino_contents)
prototypes = re.findall( prototypes = re.findall(
r"""^( r"""^(
(?:\s*[a-z_\d]+){1,2} # return type (?:\s*[a-z_\d]+){1,2} # return type
@ -297,19 +298,15 @@ def ConvertInoToCpp(env):
ino_contents, ino_contents,
re.X | re.M | re.I re.X | re.M | re.I
) )
# print includes, prototypes prototypes = [p.strip() for p in prototypes]
# print prototypes
# disable previous includes
ino_contents = re_includes.sub(r"//\1", ino_contents)
# create new temporary C++ valid file # create new temporary C++ valid file
with open(cppfile, "w") as f: with open(cppfile, "w") as f:
f.write("#include <Arduino.h>\n") f.write("#include <Arduino.h>\n")
if includes:
f.write("%s\n" % "\n".join(includes))
if prototypes: if prototypes:
f.write("%s;\n" % ";\n".join(prototypes)) f.write("%s;\n" % ";\n".join(prototypes))
f.write("#line 1 \"%s\"\n" % basename(item.path)) f.write('#line 1 "%s"\n' % basename(item.path))
f.write(ino_contents) f.write(ino_contents)
tmpcpp.append(cppfile) tmpcpp.append(cppfile)