Commit Graph

110 Commits

Author SHA1 Message Date
Tom 8e6a8428fa Undo PIMPL pattern in Environment (#127)
* resync single_include

* Undo PIMPL pattern in Environment

* Environment now supports copy construction and assignment
* Add test for copying Environment

Closes #126
2019-11-22 11:12:28 +01:00
pantor 258def7bf0 little bit more code style 2019-09-14 12:28:55 +02:00
pantor fe2ef9ce4e fix tab/spaces 2019-09-14 12:11:53 +02:00
pantor a6a61586a4 code style (cpplint) 2019-09-14 12:05:51 +02:00
Tom 057075b110 retain scope when including a template (#118)
* apply documentation changes to single_include

* retain scope when including a template

* Use data from current scope when rendering an included template.
  This allows included templates to access loop variables, which
  was not possible before.
* Add test
2019-09-14 11:35:06 +02:00
pantor d25937a85b add test and readme 2019-09-08 16:19:50 +02:00
Tom 419c93c840 Throw exception if a file cannot be opened, fix travis-ci builds (#117)
* throw exception if a file cannot be opened

* Add a new function in utils.hpp: open_file_or_throw: This function
  returns an opened std::ifstream or throws by calling `inja_throw`.
* Use this function in Parser::load_file which previously returned an
  empty string if the file couldn't be opened.
* Use this function in Environment::load_json which previously threw
  a `nlohmann::detail::parse_error` if the file couldn't be opened.
* In Parser::parse_statement: When including files through `include`,
  do not attempt to (re-)parse templates from files that were already
  included. Additionally, this prevents inja from attempting to load
  in-memory templates by their name from disk.
* Add tests that check if an exception is thrown when attempting to
  open files that do not exist.

* cmake: enable C++11

* cmake: require C++11 when depending on single_inja

* code style
2019-09-08 15:05:01 +02:00
pantor d5532ac26a add at function 2019-04-07 16:15:12 +02:00
pantor 6698e98ea3 calculate length of strings with length function 2019-04-07 13:27:43 +02:00
Mark Hollomon da5bbb1482 Remove unneed linking in update_loop_data (#85)
Commit a5862a0 made the linking step in update_loop_data unecessary
because the loop's copy of the data was made to come from the parent
loop's data rather than the original client's data.

While at it, also add one more nested loop test case.
2019-01-27 19:35:27 +01:00
Mark Hollomon 1dfd86fa6f Fix for issue #80 (#81)
* Fix for issue #80

When updating the `opening_chars`, line_statment was forgotten. So, a
change to any of the openers would cause line statements to start being
unrecognized.

I added a unit test to cover this case.

* fix indentation

* add update to single_include
2019-01-23 19:18:47 +01:00
pantor dbcd5265fc add string_view polyfill 2019-01-21 21:34:34 +01:00
Lars Berscheid a9d4ca9a4e fix string view reference movement in bytecode 2019-01-07 16:41:16 +01:00
pantor 699c207c8c Inja v2 (#67)
* inja2

* header only

* reduce dependencies

* code cleaning

* c++17

* use stdc++

* code cleaning

* infrastructure

* header only

* add infrastructure

* fix tests

* use minimum clang 6

* code cleaning, polyfill for c++11

* fix some file tests

* fix readme

* update appveyor

* fix polyfill and ci

* fix polyfill

* fix ci?

* test msvc __cplusplus

* add doxygen

* activate all tests

* code cleaning

* add coveralls, set default to dot notation

* add html test

* add doxygen comments

* test single_include file

* change build folder in appveyor

* correct make arguments in appveyor

* fix appveyor arguments
2018-12-23 16:13:15 +01:00
pantor d90f93fda0 optional benchmark 2018-12-14 19:31:40 +01:00
pantor 595076ebec split dev files and amalgamate into a single header 2018-12-14 18:03:45 +01:00
pantor 0f1f57a8a3 fix cmake build for benchmark 2018-11-23 17:57:05 +01:00
pantor 7dbdd44b0e add benchmark, add hayai 2018-11-21 21:29:36 +01:00
pantor b66f2d23aa add type checks: isString, ... 2018-11-11 14:34:35 +01:00
pantor 65cc971e21 Merge branch 'master' of https://github.com/pantor/inja 2018-08-29 19:31:55 +02:00
pantor a496ec9585 update to json 3.2 and catch 2.3, clean cmake 2018-08-29 19:31:37 +02:00
Tian Jin 4eaeb2b182 Update CMakeLists.txt (#59) 2018-07-27 13:35:47 +02:00
Tian Jin a06207b64b Update CMakeLists.txt (#58) 2018-07-25 07:44:54 +02:00
pantor 0898b1c302 use loop object for loop variables 2018-05-22 22:52:55 +02:00
pantor 71cfb21e61 include nlohmann/json in inja directly 2018-05-15 20:23:09 +02:00
pantor cb18e2cd0c add in-memory includes via include_template 2018-05-14 20:21:29 +02:00
Samuel Leweke 1cb6b15cca Add exists() function that checks existence of key (#38)
* Add exists() function that checks existence of key

Adds an exists() function that checks whether a given key exists in the
data. If only one argument is provided to exists(), the global data is
queried for the item. If two arguments are given, the first argument
specifies the object to query for the key given as second argument.

Also adds corresponding unit tests and updates README for
documentation.

* Split exists() into exists() and existsIn()

Splits the exists() function, which previously took both one or two
arguments, into an exists() function accepting one and an existsIn()
function accepting two arguments.
2018-04-02 15:54:00 +02:00
pantor 73a40cf1b1 fix mac os x callback without parent bug 2018-03-20 16:36:11 +01:00
pantor cfa0e5cbfe fix old xcode tests 2018-03-19 18:34:35 +01:00
pantor e38df0931f Fix line statements 2018-03-19 12:20:12 +01:00
pantor 561f8cf59e Catch some errors for conditional parsing 2018-03-19 11:43:19 +01:00
pantor 1766793fd5 Allow index in nested loops 2018-03-19 11:09:23 +01:00
pantor 776af96b0b Use callbacks without parameters either with or without parenthesis 2018-03-19 10:46:49 +01:00
pantor b68f745866 added is_last == false test 2018-03-19 10:37:55 +01:00
pantor cd43573c0e add not is_last test 2018-03-19 10:33:37 +01:00
pantor 44f7461a8a allow empty lists for loops 2018-03-19 10:30:26 +01:00
pantor 6da37615ef fix global path test 2018-03-07 16:54:23 +01:00
pantor 98506f355a add meson build for testing 2018-03-07 15:24:58 +01:00
pantor 904074c9a8 fix test for loop error message 2018-03-01 14:47:20 +01:00
pantor 6f7fad983d add float and int string conversion 2018-03-01 11:29:56 +01:00
pantor 097ebf1f90 fix search_closed_on_level if nothing was found 2018-02-28 12:42:39 +01:00
pantor f7e0fa1c68 fix throw test 2018-02-24 17:45:29 +01:00
pantor 7e32e8bcfe use central throw function 2018-02-24 14:50:38 +01:00
pantor 2ae161b4bd make renderer private in env 2018-02-23 23:47:09 +01:00
pantor c29fd9189d allow callbacks with the same name but different number of arguments 2018-02-23 20:07:04 +01:00
pantor 221b59d364 use at for json pointer, fix errors 2018-02-23 14:51:48 +01:00
pantor 74ad4281ed fix render file/template bug 2018-02-20 10:20:26 +01:00
pantor 9f97c9add1 add sort function 2018-02-18 19:41:56 +01:00
pantor 37d16d3c3a min, max functions 2018-02-18 19:34:16 +01:00
pantor c886c89131 add map loops 2018-02-18 19:24:49 +01:00