From f954c7edd4d392342309411e58611c358bdbd2f9 Mon Sep 17 00:00:00 2001 From: Uli Franke Date: Tue, 4 Feb 2020 21:30:49 +0100 Subject: [PATCH 1/5] Added support for Arduino sketches (.ino) --- src/embedme.lib.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/embedme.lib.ts b/src/embedme.lib.ts index d4d8f3e..43c2037 100644 --- a/src/embedme.lib.ts +++ b/src/embedme.lib.ts @@ -74,6 +74,7 @@ enum SupportedFileType { PROTOBUF = 'proto', SQL = 'sql', HASKELL = 'hs', + ARDUINO = 'ino', } enum CommentFamily { @@ -106,6 +107,7 @@ const languageMap: Record = { SupportedFileType.SCALA, SupportedFileType.JSON_5, SupportedFileType.PROTOBUF, + SupportedFileType.ARDUINO, ], [CommentFamily.XML]: [SupportedFileType.HTML, SupportedFileType.MARKDOWN, SupportedFileType.XML], [CommentFamily.HASH]: [ From 67edaa3ea9f9f777fc857786a9186b0ffaec22a9 Mon Sep 17 00:00:00 2001 From: Uli Franke Date: Tue, 4 Feb 2020 22:11:57 +0100 Subject: [PATCH 2/5] Tried to add the Arduino .ino support to the testbench --- test/fixtures/fixture-in-place.md | 16 ++++++++++++++++ test/fixtures/fixture-source.md | 6 ++++++ test/fixtures/fixture.md | 14 ++++++++++++++ test/fixtures/snippets/sample.ino | 8 ++++++++ 4 files changed, 44 insertions(+) create mode 100644 test/fixtures/snippets/sample.ino diff --git a/test/fixtures/fixture-in-place.md b/test/fixtures/fixture-in-place.md index a2d0076..3c85f83 100644 --- a/test/fixtures/fixture-in-place.md +++ b/test/fixtures/fixture-in-place.md @@ -74,6 +74,22 @@ int main() ``` +Arduino + +```cpp +// snippets/sample.ino + +#include +using namespace std; + +int main() +{ + cout << "Hello, World!"; + return 0; +} + +``` + C ```c diff --git a/test/fixtures/fixture-source.md b/test/fixtures/fixture-source.md index 17b8bff..d9212a2 100644 --- a/test/fixtures/fixture-source.md +++ b/test/fixtures/fixture-source.md @@ -43,6 +43,12 @@ C++ // snippets/sample.cpp ``` +Arduino + +```cpp +// snippets/sample.ino +``` + C ```c diff --git a/test/fixtures/fixture.md b/test/fixtures/fixture.md index a2d0076..669151c 100644 --- a/test/fixtures/fixture.md +++ b/test/fixtures/fixture.md @@ -74,6 +74,20 @@ int main() ``` +Arduino + +```cpp +// snippets/sample.ino + +#include +using namespace std; + +int main() +{ + cout << "Hello, World!"; + return 0; +} + C ```c diff --git a/test/fixtures/snippets/sample.ino b/test/fixtures/snippets/sample.ino new file mode 100644 index 0000000..2a9ace7 --- /dev/null +++ b/test/fixtures/snippets/sample.ino @@ -0,0 +1,8 @@ +#include +using namespace std; + +int main() +{ + cout << "Hello, World!"; + return 0; +} From 8ce1de19d9269417f6fb99b338af6a379b6b0d63 Mon Sep 17 00:00:00 2001 From: Uli Franke Date: Tue, 4 Feb 2020 23:15:39 +0100 Subject: [PATCH 3/5] * Adapted readme for Arduino .ino sketches and running it through embedme * Reverted test/fixtures/fixture-in-place.md after reading zakhenry commits for other language adds --- README.md | 3 ++- test/fixtures/fixture-in-place.md | 16 ---------------- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index f0f16b7..844f475 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ Here's a list of file types supported by this utility, if you have a need for an contribute, it is easy! ```ts -// src/embedme.lib.ts#L44-L77 +// src/embedme.lib.ts#L44-L78 enum SupportedFileType { PLAIN_TEXT = 'txt', @@ -118,6 +118,7 @@ enum SupportedFileType { PROTOBUF = 'proto', SQL = 'sql', HASKELL = 'hs', + ARDUINO = 'ino', } ``` diff --git a/test/fixtures/fixture-in-place.md b/test/fixtures/fixture-in-place.md index 3c85f83..a2d0076 100644 --- a/test/fixtures/fixture-in-place.md +++ b/test/fixtures/fixture-in-place.md @@ -74,22 +74,6 @@ int main() ``` -Arduino - -```cpp -// snippets/sample.ino - -#include -using namespace std; - -int main() -{ - cout << "Hello, World!"; - return 0; -} - -``` - C ```c From ebf6a12b770cfdfbcad6b94fa2b7f95026e93090 Mon Sep 17 00:00:00 2001 From: Uli Franke Date: Tue, 4 Feb 2020 23:35:12 +0100 Subject: [PATCH 4/5] Shame on me - not even capable to copy paste --- test/fixtures/fixture.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/fixtures/fixture.md b/test/fixtures/fixture.md index 669151c..3c85f83 100644 --- a/test/fixtures/fixture.md +++ b/test/fixtures/fixture.md @@ -88,6 +88,8 @@ int main() return 0; } +``` + C ```c From f2827899bf188dfcd8cb22284e6b02a4946b1fa5 Mon Sep 17 00:00:00 2001 From: Zak Henry Date: Tue, 11 Feb 2020 11:50:50 +0000 Subject: [PATCH 5/5] feat(Arduino): Support arduino .ino files --- test/fixtures/fixture-in-place.md | 16 +++++ test/snapshots/test.ts.md | 99 +++++++++++++++++------------- test/snapshots/test.ts.snap | Bin 3072 -> 3107 bytes 3 files changed, 74 insertions(+), 41 deletions(-) diff --git a/test/fixtures/fixture-in-place.md b/test/fixtures/fixture-in-place.md index a2d0076..3c85f83 100644 --- a/test/fixtures/fixture-in-place.md +++ b/test/fixtures/fixture-in-place.md @@ -74,6 +74,22 @@ int main() ``` +Arduino + +```cpp +// snippets/sample.ino + +#include +using namespace std; + +int main() +{ + cout << "Hello, World!"; + return 0; +} + +``` + C ```c diff --git a/test/snapshots/test.ts.md b/test/snapshots/test.ts.md index 232d7a6..1d6c363 100644 --- a/test/snapshots/test.ts.md +++ b/test/snapshots/test.ts.md @@ -84,6 +84,22 @@ Generated by [AVA](https://ava.li). ␊ ```␊ ␊ + Arduino␊ + ␊ + ```cpp␊ + // snippets/sample.ino␊ + ␊ + #include ␊ + using namespace std;␊ + ␊ + int main()␊ + {␊ + cout << "Hello, World!";␊ + return 0;␊ + }␊ + ␊ + ```␊ + ␊ C␊ ␊ ```c␊ @@ -537,47 +553,48 @@ Generated by [AVA](https://ava.li). test/fixtures/fixture-in-place.md#L43-L48 Embedded 2 lines from file snippets/sample.py␊ test/fixtures/fixture-in-place.md#L52-L59 Embedded 4 lines from file snippets/sample.rs␊ test/fixtures/fixture-in-place.md#L63-L75 Embedded 9 lines from file snippets/sample.cpp␊ - test/fixtures/fixture-in-place.md#L79-L90 Embedded 8 lines from file snippets/sample.c␊ - test/fixtures/fixture-in-place.md#L94-L106 Embedded 9 lines from file snippets/sample.java␊ - test/fixtures/fixture-in-place.md#L110-L121 Embedded 8 lines from file snippets/sample.go␊ - test/fixtures/fixture-in-place.md#L125-L131 Embedded 3 lines from file snippets/sample.sh␊ - test/fixtures/fixture-in-place.md#L135-L141 Embedded 3 lines from file snippets/sample.sh␊ - test/fixtures/fixture-in-place.md#L145-L157 Embedded 9 lines from file snippets/sample.m␊ - test/fixtures/fixture-in-place.md#L161-L170 Embedded 6 lines from file snippets/sample.scss␊ - test/fixtures/fixture-in-place.md#L174-L181 Embedded 4 lines from file snippets/sample.php␊ - test/fixtures/fixture-in-place.md#L185-L204 Embedded 16 lines from file snippets/sample.cs␊ - test/fixtures/fixture-in-place.md#L208-L213 Embedded 2 lines from file snippets/sample.swift␊ - test/fixtures/fixture-in-place.md#L217-L224 Embedded 4 lines from file snippets/sample.xml␊ - test/fixtures/fixture-in-place.md#L228-L234 Embedded 3 lines from file snippets/sample.yaml␊ - test/fixtures/fixture-in-place.md#L240-L245 Embedded 4 lines from file snippets/sample.json␊ - test/fixtures/fixture-in-place.md#L249-L256 Embedded 4 lines from file snippets/sample.json5␊ - test/fixtures/fixture-in-place.md#L260-L265 Embedded 2 lines from file snippets/sample.rb␊ - test/fixtures/fixture-in-place.md#L269-L274 Embedded 2 lines from file snippets/sample.cr␊ - test/fixtures/fixture-in-place.md#L278-L285 Embedded 4 lines from file snippets/sample.kt␊ - test/fixtures/fixture-in-place.md#L289-L298 Embedded 6 lines from file snippets/sample.scala␊ - test/fixtures/fixture-in-place.md#L302-L312 Embedded 7 lines from file snippets/sample.puml␊ - test/fixtures/fixture-in-place.md#L316-L329 Embedded 10 lines from file snippets/sample.mermaid␊ - test/fixtures/fixture-in-place.md#L333-L346 Embedded 10 lines from file snippets/sample.proto␊ - test/fixtures/fixture-in-place.md#L350-L357 Embedded 4 lines from file snippets/sample.cmake␊ - test/fixtures/fixture-in-place.md#L361-L367 Embedded 3 lines from file snippets/sample.sql␊ - test/fixtures/fixture-in-place.md#L371-L376 Embedded 2 lines from file snippets/sample.hs␊ - test/fixtures/fixture-in-place.md#L380-L386 Embedded 3 lines from file snippets/sample␊ - test/fixtures/fixture-in-place.md#L390-L401 Embedded 8 lines from file snippets/sample.cs#L6-L13␊ - test/fixtures/fixture-in-place.md#L405-L412 Embedded 4 lines from file snippets/sample.ts␊ - test/fixtures/fixture-in-place.md#L418-L420 "Ignore next" comment detected, skipping code block...␊ - test/fixtures/fixture-in-place.md#L426-L428 "Ignore next" comment detected, skipping code block...␊ - test/fixtures/fixture-in-place.md#L434-L439 Embedded 4 lines from file snippets/sample.ts␊ - test/fixtures/fixture-in-place.md#L445-L450 Embedded 4 lines from file snippets/sample.json␊ - test/fixtures/fixture-in-place.md#L456-L457 Code block is empty & no preceding embedme comment, skipping...␊ - test/fixtures/fixture-in-place.md#L461-L463 Unsupported file extension [binary], supported extensions are txt, ts, js, scss, rust, java, cpp, c, html, xml, md, yaml, json, json5, py, bash, sh, go, objectivec, php, cs, swift, rb, kotlin, scala, cr, puml, mermaid, cmake, proto, sql, hs, skipping code block␊ - test/fixtures/fixture-in-place.md#L467-L469 No code extension detected, skipping code block...␊ - test/fixtures/fixture-in-place.md#L473-L475 No comment detected in first line for block with extension ts␊ - test/fixtures/fixture-in-place.md#L479-L481 Found filename also-not-a-file in comment in first line, but file does not exist at ${cwd}/test/fixtures/also-not-a-file!␊ - test/fixtures/fixture-in-place.md#L485-L487 Found filename this-file-does-not-exist.txt in comment in first line, but file does not exist at ${cwd}/test/fixtures/this-file-does-not-exist.txt!␊ - test/fixtures/fixture-in-place.md#L491-L493 Found filename contains-codefence.md in comment in first line, but file does not exist at ${cwd}/test/fixtures/contains-codefence.md!␊ - test/fixtures/fixture-in-place.md#L497-L503 Found filename contains-codefence.md in comment in first line, but file does not exist at ${cwd}/test/fixtures/contains-codefence.md!␊ - test/fixtures/fixture-in-place.md#L507-L509 Incorrectly formatted line numbering string snippets/sample.ts#L1-2, Expecting Github formatting e.g. #L10-L20␊ - test/fixtures/fixture-in-place.md#L513-L515 Code block is empty & no preceding embedme comment, skipping...␊ + test/fixtures/fixture-in-place.md#L79-L91 Embedded 9 lines from file snippets/sample.ino␊ + test/fixtures/fixture-in-place.md#L95-L106 Embedded 8 lines from file snippets/sample.c␊ + test/fixtures/fixture-in-place.md#L110-L122 Embedded 9 lines from file snippets/sample.java␊ + test/fixtures/fixture-in-place.md#L126-L137 Embedded 8 lines from file snippets/sample.go␊ + test/fixtures/fixture-in-place.md#L141-L147 Embedded 3 lines from file snippets/sample.sh␊ + test/fixtures/fixture-in-place.md#L151-L157 Embedded 3 lines from file snippets/sample.sh␊ + test/fixtures/fixture-in-place.md#L161-L173 Embedded 9 lines from file snippets/sample.m␊ + test/fixtures/fixture-in-place.md#L177-L186 Embedded 6 lines from file snippets/sample.scss␊ + test/fixtures/fixture-in-place.md#L190-L197 Embedded 4 lines from file snippets/sample.php␊ + test/fixtures/fixture-in-place.md#L201-L220 Embedded 16 lines from file snippets/sample.cs␊ + test/fixtures/fixture-in-place.md#L224-L229 Embedded 2 lines from file snippets/sample.swift␊ + test/fixtures/fixture-in-place.md#L233-L240 Embedded 4 lines from file snippets/sample.xml␊ + test/fixtures/fixture-in-place.md#L244-L250 Embedded 3 lines from file snippets/sample.yaml␊ + test/fixtures/fixture-in-place.md#L256-L261 Embedded 4 lines from file snippets/sample.json␊ + test/fixtures/fixture-in-place.md#L265-L272 Embedded 4 lines from file snippets/sample.json5␊ + test/fixtures/fixture-in-place.md#L276-L281 Embedded 2 lines from file snippets/sample.rb␊ + test/fixtures/fixture-in-place.md#L285-L290 Embedded 2 lines from file snippets/sample.cr␊ + test/fixtures/fixture-in-place.md#L294-L301 Embedded 4 lines from file snippets/sample.kt␊ + test/fixtures/fixture-in-place.md#L305-L314 Embedded 6 lines from file snippets/sample.scala␊ + test/fixtures/fixture-in-place.md#L318-L328 Embedded 7 lines from file snippets/sample.puml␊ + test/fixtures/fixture-in-place.md#L332-L345 Embedded 10 lines from file snippets/sample.mermaid␊ + test/fixtures/fixture-in-place.md#L349-L362 Embedded 10 lines from file snippets/sample.proto␊ + test/fixtures/fixture-in-place.md#L366-L373 Embedded 4 lines from file snippets/sample.cmake␊ + test/fixtures/fixture-in-place.md#L377-L383 Embedded 3 lines from file snippets/sample.sql␊ + test/fixtures/fixture-in-place.md#L387-L392 Embedded 2 lines from file snippets/sample.hs␊ + test/fixtures/fixture-in-place.md#L396-L402 Embedded 3 lines from file snippets/sample␊ + test/fixtures/fixture-in-place.md#L406-L417 Embedded 8 lines from file snippets/sample.cs#L6-L13␊ + test/fixtures/fixture-in-place.md#L421-L428 Embedded 4 lines from file snippets/sample.ts␊ + test/fixtures/fixture-in-place.md#L434-L436 "Ignore next" comment detected, skipping code block...␊ + test/fixtures/fixture-in-place.md#L442-L444 "Ignore next" comment detected, skipping code block...␊ + test/fixtures/fixture-in-place.md#L450-L455 Embedded 4 lines from file snippets/sample.ts␊ + test/fixtures/fixture-in-place.md#L461-L466 Embedded 4 lines from file snippets/sample.json␊ + test/fixtures/fixture-in-place.md#L472-L473 Code block is empty & no preceding embedme comment, skipping...␊ + test/fixtures/fixture-in-place.md#L477-L479 Unsupported file extension [binary], supported extensions are txt, ts, js, scss, rust, java, cpp, c, html, xml, md, yaml, json, json5, py, bash, sh, go, objectivec, php, cs, swift, rb, kotlin, scala, cr, puml, mermaid, cmake, proto, sql, hs, ino, skipping code block␊ + test/fixtures/fixture-in-place.md#L483-L485 No code extension detected, skipping code block...␊ + test/fixtures/fixture-in-place.md#L489-L491 No comment detected in first line for block with extension ts␊ + test/fixtures/fixture-in-place.md#L495-L497 Found filename also-not-a-file in comment in first line, but file does not exist at ${cwd}/test/fixtures/also-not-a-file!␊ + test/fixtures/fixture-in-place.md#L501-L503 Found filename this-file-does-not-exist.txt in comment in first line, but file does not exist at ${cwd}/test/fixtures/this-file-does-not-exist.txt!␊ + test/fixtures/fixture-in-place.md#L507-L509 Found filename contains-codefence.md in comment in first line, but file does not exist at ${cwd}/test/fixtures/contains-codefence.md!␊ + test/fixtures/fixture-in-place.md#L513-L519 Found filename contains-codefence.md in comment in first line, but file does not exist at ${cwd}/test/fixtures/contains-codefence.md!␊ + test/fixtures/fixture-in-place.md#L523-L525 Incorrectly formatted line numbering string snippets/sample.ts#L1-2, Expecting Github formatting e.g. #L10-L20␊ + test/fixtures/fixture-in-place.md#L529-L531 Code block is empty & no preceding embedme comment, skipping...␊ Writing test/fixtures/fixture-in-place.md with embedded changes.␊ ` diff --git a/test/snapshots/test.ts.snap b/test/snapshots/test.ts.snap index 359c363ff8613fc4f4bcbb612ba93a2551a68d78..3155f2fabf9893b869b89e25ce07b1a855140835 100644 GIT binary patch literal 3107 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 literal 3072 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 ObmxBqBNk=7DgXdqAnR}d