Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adjust JSON Pointer examples #3622

Merged
merged 6 commits into from
Jul 29, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/workflows/ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -147,3 +147,12 @@ jobs:
run: python -m pip install reuse
- name: REUSE lint
run: reuse lint

ci_test_documentation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: cmake
run: cmake -S . -B build -DJSON_CI=On
- name: build
run: cmake --build build --target ci_test_documentation
10 changes: 10 additions & 0 deletions cmake/ci.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -934,6 +934,16 @@ add_custom_target(ci_icpc
COMMENT "Compile and test with ICPC"
)

###############################################################################
# test documentation
###############################################################################

add_custom_target(ci_test_documentation
COMMAND make check_output_portable -j8
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/docs
COMMENT "Check that all examples compile and create the desired output"
)

###############################################################################
# Clean up all generated files.
###############################################################################
Expand Down
8 changes: 6 additions & 2 deletions docs/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ EXAMPLES = $(wildcard examples/*.cpp)

# create output from a stand-alone example file
%.output: %.cpp
make $(<:.cpp=) CPPFLAGS="-I $(SRCDIR)" CXXFLAGS="-std=c++11"
$(MAKE) $(<:.cpp=) CPPFLAGS="-I $(SRCDIR)" CXXFLAGS="-std=c++11"
./$(<:.cpp=) > $@
rm $(<:.cpp=)

# compare created output with current output of the example files
%.test: %.cpp
make $(<:.cpp=) CPPFLAGS="-I $(SRCDIR)" CXXFLAGS="-std=c++11"
$(MAKE) $(<:.cpp=) CPPFLAGS="-I $(SRCDIR)" CXXFLAGS="-std=c++11"
./$(<:.cpp=) > $@
diff $@ $(<:.cpp=.output)
rm $(<:.cpp=) $@
Expand All @@ -28,6 +28,10 @@ create_output: $(EXAMPLES:.cpp=.output)
# check output of all stand-alone example files
check_output: $(EXAMPLES:.cpp=.test)

# check output of all stand-alone example files (exclude files with platform-dependent output.)
# This target is used in the CI (ci_test_documentation).
check_output_portable: $(filter-out examples/meta.test examples/max_size.test examples/std_hash.test examples/basic_json__CompatibleType.test,$(EXAMPLES:.cpp=.test))

clean:
rm -fr $(EXAMPLES:.cpp=)
$(MAKE) clean -C docset
Expand Down
4 changes: 2 additions & 2 deletions docs/examples/json_pointer__back.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ int main()
json::json_pointer ptr2("/foo/0");

// call empty()
std::cout << "last reference token of " << ptr1 << " is " << ptr1.back() << '\n'
<< "last reference token of " << ptr2 << " is " << ptr2.back() << std::endl;
std::cout << "last reference token of \"" << ptr1 << "\" is \"" << ptr1.back() << "\"\n"
<< "last reference token of \"" << ptr2 << "\" is \"" << ptr2.back() << "\"" << std::endl;
}
4 changes: 2 additions & 2 deletions docs/examples/json_pointer__back.output
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
last reference token of "/foo" is foo
last reference token of "/foo/0" is 0
last reference token of "/foo" is "foo"
last reference token of "/foo/0" is "0"
8 changes: 4 additions & 4 deletions docs/examples/json_pointer__empty.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ int main()

// call empty()
std::cout << std::boolalpha
<< ptr0 << ": " << ptr0.empty() << '\n'
<< ptr1 << ": " << ptr1.empty() << '\n'
<< ptr2 << ": " << ptr2.empty() << '\n'
<< ptr3 << ": " << ptr3.empty() << std::endl;
<< "\"" << ptr0 << "\": " << ptr0.empty() << '\n'
<< "\"" << ptr1 << "\": " << ptr1.empty() << '\n'
<< "\"" << ptr2 << "\": " << ptr2.empty() << '\n'
<< "\"" << ptr3 << "\": " << ptr3.empty() << std::endl;
}
8 changes: 4 additions & 4 deletions docs/examples/json_pointer__operator_add.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@ int main()
{
// create a JSON pointer
json::json_pointer ptr("/foo");
std::cout << ptr << '\n';
std::cout << "\"" << ptr << "\"\n";

// append a JSON Pointer
ptr /= json::json_pointer("/bar/baz");
std::cout << ptr << '\n';
std::cout << "\"" << ptr << "\"\n";

// append a string
ptr /= "fob";
std::cout << ptr << '\n';
std::cout << "\"" << ptr << "\"\n";

// append an array index
ptr /= 42;
std::cout << ptr << std::endl;
std::cout << "\"" << ptr << "\"" << std::endl;
}
6 changes: 3 additions & 3 deletions docs/examples/json_pointer__operator_add_binary.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ int main()
json::json_pointer ptr("/foo");

// append a JSON Pointer
std::cout << ptr / json::json_pointer("/bar/baz") << '\n';
std::cout << "\"" << ptr / json::json_pointer("/bar/baz") << "\"\n";

// append a string
std::cout << ptr / "fob" << '\n';
std::cout << "\"" << ptr / "fob" << "\"\n";

// append an array index
std::cout << ptr / 42 << std::endl;
std::cout << "\"" << ptr / 42 << "\"" << std::endl;
}
6 changes: 3 additions & 3 deletions docs/examples/json_pointer__parent_pointer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ int main()

// call parent_pointer()
std::cout << std::boolalpha
<< "parent of " << ptr1 << " is " << ptr1.parent_pointer() << '\n'
<< "parent of " << ptr2 << " is " << ptr2.parent_pointer() << '\n'
<< "parent of " << ptr3 << " is " << ptr3.parent_pointer() << std::endl;
<< "parent of \"" << ptr1 << "\" is \"" << ptr1.parent_pointer() << "\"\n"
<< "parent of \"" << ptr2 << "\" is \"" << ptr2.parent_pointer() << "\"\n"
<< "parent of \"" << ptr3 << "\" is \"" << ptr3.parent_pointer() << "\"" << std::endl;
}
8 changes: 4 additions & 4 deletions docs/examples/json_pointer__pop_back.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ int main()
{
// create empty JSON Pointer
json::json_pointer ptr("/foo/bar/baz");
std::cout << ptr << '\n';
std::cout << "\"" << ptr << "\"\n";

// call pop_back()
ptr.pop_back();
std::cout << ptr << '\n';
std::cout << "\"" << ptr << "\"\n";

ptr.pop_back();
std::cout << ptr << '\n';
std::cout << "\"" << ptr << "\"\n";

ptr.pop_back();
std::cout << ptr << '\n';
std::cout << "\"" << ptr << "\"\n";
}
8 changes: 4 additions & 4 deletions docs/examples/json_pointer__push_back.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ int main()
{
// create empty JSON Pointer
json::json_pointer ptr;
std::cout << ptr << '\n';
std::cout << "\"" << ptr << "\"\n";

// call push_back()
ptr.push_back("foo");
std::cout << ptr << '\n';
std::cout << "\"" << ptr << "\"\n";

ptr.push_back("0");
std::cout << ptr << '\n';
std::cout << "\"" << ptr << "\"\n";

ptr.push_back("bar");
std::cout << ptr << '\n';
std::cout << "\"" << ptr << "\"\n";
}
24 changes: 12 additions & 12 deletions docs/examples/json_pointer__to_string.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,16 @@ int main()
json::json_pointer ptr11("/ ");
json::json_pointer ptr12("/m~0n");

std::cout << ptr1.to_string() << '\n'
<< ptr2.to_string() << '\n'
<< ptr3.to_string() << '\n'
<< ptr4.to_string() << '\n'
<< ptr5.to_string() << '\n'
<< ptr6.to_string() << '\n'
<< ptr7.to_string() << '\n'
<< ptr8.to_string() << '\n'
<< ptr9.to_string() << '\n'
<< ptr10.to_string() << '\n'
<< ptr11.to_string() << '\n'
<< ptr12.to_string() << std::endl;
std::cout << "\"" << ptr1.to_string() << "\"\n"
<< "\"" << ptr2.to_string() << "\"\n"
<< "\"" << ptr3.to_string() << "\"\n"
<< "\"" << ptr4.to_string() << "\"\n"
<< "\"" << ptr5.to_string() << "\"\n"
<< "\"" << ptr6.to_string() << "\"\n"
<< "\"" << ptr7.to_string() << "\"\n"
<< "\"" << ptr8.to_string() << "\"\n"
<< "\"" << ptr9.to_string() << "\"\n"
<< "\"" << ptr10.to_string() << "\"\n"
<< "\"" << ptr11.to_string() << "\"\n"
<< "\"" << ptr12.to_string() << "\"" << std::endl;
}
24 changes: 12 additions & 12 deletions docs/examples/json_pointer__to_string.output
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@

/foo
/foo/0
/
/a~1b
/c%d
/e^f
/g|h
/i\j
/k"l
/
/m~0n
""
"/foo"
"/foo/0"
"/"
"/a~1b"
"/c%d"
"/e^f"
"/g|h"
"/i\j"
"/k"l"
"/ "
"/m~0n"
2 changes: 1 addition & 1 deletion docs/examples/patch_inplace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,5 @@ int main()
doc.patch_inplace(patch);

// output patched document
std::cout << "After\n" << std::setw(4) << doc << std::endl;
std::cout << "\nAfter\n" << std::setw(4) << doc << std::endl;
}
2 changes: 2 additions & 0 deletions docs/mkdocs/docs/api/basic_json/basic_json.md
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,8 @@ basic_json(basic_json&& other) noexcept;
--8<-- "examples/basic_json__CompatibleType.output"
```

Note the output is platform-dependent.

??? example "Example: (5) create a container (array or object) from an initializer list"

The example below shows how JSON values are created from initializer lists.
Expand Down
4 changes: 3 additions & 1 deletion docs/mkdocs/docs/api/basic_json/max_size.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ string elements the JSON value can store which is `1`.

??? example

The following code calls `max_size()` on the different value types. Note the output is implementation specific.
The following code calls `max_size()` on the different value types.

```cpp
--8<-- "examples/max_size.cpp"
Expand All @@ -52,6 +52,8 @@ string elements the JSON value can store which is `1`.
--8<-- "examples/max_size.output"
```

Note the output is platform-dependent.

## Version history

- Added in version 1.0.0.
Expand Down
5 changes: 3 additions & 2 deletions docs/mkdocs/docs/api/basic_json/meta.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ Constant.

??? example

The following code shows an example output of the `meta()`
function.
The following code shows an example output of the `meta()` function.

```cpp
--8<-- "examples/meta.cpp"
Expand All @@ -45,6 +44,8 @@ Constant.
--8<-- "examples/meta.output"
```

Note the output is platform-dependent.

## See also

- [**NLOHMANN_JSON_VERSION_MAJOR**/**NLOHMANN_JSON_VERSION_MINOR**/**NLOHMANN_JSON_VERSION_PATCH**](../macros/nlohmann_json_version_major.md) - library version information
Expand Down
2 changes: 2 additions & 0 deletions docs/mkdocs/docs/api/basic_json/std_hash.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ type of the JSON value is taken into account to have different hash values for `
--8<-- "examples/std_hash.output"
```

Note the output is platform-dependent.

## Version history

- Added in version 1.0.0.
Expand Down