markdown_record 0.1.3 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +63 -43
- data/app/helpers/markdown_record/application_helper.rb +23 -0
- data/app/helpers/markdown_record/controller_helpers.rb +1 -1
- data/app/helpers/markdown_record/view_helpers.rb +9 -3
- data/{lib → app/models}/markdown_record/base.rb +10 -0
- data/{lib → app/models}/markdown_record/content_fragment.rb +17 -2
- data/lib/generators/markdown_record_generator.rb +6 -0
- data/lib/markdown_record/configuration.rb +4 -0
- data/lib/markdown_record/file_sorting/base.rb +25 -0
- data/lib/markdown_record/file_sorting/date_sorter.rb +14 -0
- data/lib/markdown_record/file_sorting/sem_ver_sorter.rb +47 -0
- data/lib/markdown_record/{association.rb → models/association.rb} +20 -3
- data/lib/markdown_record/{associations.rb → models/associations.rb} +17 -9
- data/lib/markdown_record/{content_associations.rb → models/content_associations.rb} +4 -2
- data/lib/markdown_record/models/filtering.rb +13 -0
- data/lib/markdown_record/models/filters/array_filter.rb +11 -0
- data/lib/markdown_record/models/filters/base_filter.rb +35 -0
- data/lib/markdown_record/models/filters/hash_filter.rb +81 -0
- data/lib/markdown_record/models/filters/nil_filter.rb +11 -0
- data/lib/markdown_record/models/filters/range_filter.rb +11 -0
- data/lib/markdown_record/models/filters/regexp_filter.rb +11 -0
- data/lib/markdown_record/models/filters/symbol_filter.rb +14 -0
- data/lib/markdown_record/models/filters.rb +22 -0
- data/lib/markdown_record/models/model_inflator.rb +65 -0
- data/lib/markdown_record/path_utilities.rb +20 -11
- data/lib/markdown_record/rendering/content_dsl/attribute.rb +22 -0
- data/lib/markdown_record/{content_dsl → rendering/content_dsl}/directory_fragment.rb +3 -3
- data/lib/markdown_record/{content_dsl → rendering/content_dsl}/disable.rb +2 -2
- data/lib/markdown_record/{content_dsl → rendering/content_dsl}/enable.rb +2 -2
- data/lib/markdown_record/{content_dsl → rendering/content_dsl}/end_attribute.rb +3 -3
- data/lib/markdown_record/{content_dsl → rendering/content_dsl}/end_model.rb +3 -3
- data/lib/markdown_record/{content_dsl → rendering/content_dsl}/fragment.rb +3 -3
- data/lib/markdown_record/rendering/content_dsl/model.rb +22 -0
- data/lib/markdown_record/rendering/content_dsl/scope.rb +22 -0
- data/lib/markdown_record/{content_dsl → rendering/content_dsl}/use_layout.rb +3 -3
- data/lib/markdown_record/rendering/content_dsl.rb +45 -0
- data/lib/markdown_record/rendering/html_renderer.rb +22 -0
- data/lib/markdown_record/{indexer.rb → rendering/indexer.rb} +0 -10
- data/lib/markdown_record/rendering/json_renderer.rb +20 -0
- data/lib/markdown_record/rendering/nodes/html_base.rb +95 -0
- data/lib/markdown_record/rendering/nodes/html_directory.rb +51 -0
- data/lib/markdown_record/rendering/nodes/html_file.rb +48 -0
- data/lib/markdown_record/rendering/nodes/json_base.rb +55 -0
- data/lib/markdown_record/rendering/nodes/json_directory.rb +69 -0
- data/lib/markdown_record/rendering/nodes/json_file.rb +172 -0
- data/lib/markdown_record/{rendering.rb → rendering/rendering.rb} +1 -1
- data/lib/markdown_record/{validator.rb → rendering/validator.rb} +4 -4
- data/lib/markdown_record/version.rb +1 -1
- data/lib/markdown_record.rb +21 -14
- data/templates/demo/content/10_custom_models_and_associations.md.erb +27 -7
- data/templates/demo/content/11_controller_helpers.md.erb +2 -2
- data/templates/demo/content/12_configuration.md.erb +22 -3
- data/templates/demo/content/13_sandbox/1_foo.md +2 -1
- data/templates/demo/content/13_sandbox/2_sandbox_nested/1_bar.md +4 -1
- data/templates/demo/content/1_home.md.erb +30 -13
- data/templates/demo/content/2_installation.md.erb +61 -46
- data/templates/demo/content/3_rendering_basics.md.erb +3 -3
- data/templates/demo/content/4_content_dsl.md.erb +22 -11
- data/templates/demo/content/5_routes.md.erb +10 -7
- data/templates/demo/content/6_model_basics.md.erb +11 -11
- data/templates/demo/content/7_content_frags.md.erb +9 -6
- data/templates/demo/content/8_erb_syntax_and_view_helpers.md.erb +32 -11
- data/templates/demo/content/9_layouts.md.erb +3 -3
- data/templates/demo/layouts/_global_layout.html.erb +1 -0
- data/templates/demo/models/dsl_command.rb +6 -0
- data/templates/demo/models/section.rb +5 -0
- data/templates/render_content.thor +2 -1
- data/templates/tests/assets/images/ruby-logo.png +0 -0
- data/templates/tests/content/1_test_files_home.md.erb +31 -0
- data/templates/tests/content/2_content_dsl_tests/1_content_dsl.md.erb +162 -0
- data/templates/tests/content/2_content_dsl_tests/2_nested_directory/1_associations.md.erb +83 -0
- data/templates/tests/layouts/_concatenated_layout.html.erb +12 -0
- data/templates/tests/layouts/_custom_layout.html.erb +14 -0
- data/templates/tests/layouts/_file_layout.html.erb +15 -0
- data/templates/tests/layouts/_global_layout.html.erb +116 -0
- metadata +53 -34
- data/app/models/markdown_record/demo/dsl_command.rb +0 -10
- data/app/models/markdown_record/demo/section.rb +0 -9
- data/app/models/markdown_record/tests/child_model.rb +0 -15
- data/app/models/markdown_record/tests/fake_active_record_model.rb +0 -13
- data/app/models/markdown_record/tests/model.rb +0 -15
- data/app/models/markdown_record/tests/other_child_model.rb +0 -15
- data/lib/markdown_record/cli.rb +0 -54
- data/lib/markdown_record/content_dsl/attribute.rb +0 -22
- data/lib/markdown_record/content_dsl/model.rb +0 -23
- data/lib/markdown_record/content_dsl/render_format.rb +0 -22
- data/lib/markdown_record/content_dsl/render_strategy.rb +0 -22
- data/lib/markdown_record/content_dsl.rb +0 -37
- data/lib/markdown_record/html_renderer.rb +0 -194
- data/lib/markdown_record/json_renderer.rb +0 -270
- data/lib/markdown_record/model_inflator.rb +0 -107
- data/lib/markdown_record/routes_renderer.rb +0 -0
- /data/lib/markdown_record/{file_saver.rb → rendering/file_saver.rb} +0 -0
@@ -1,107 +0,0 @@
|
|
1
|
-
require "markdown_record/path_utilities"
|
2
|
-
|
3
|
-
module MarkdownRecord
|
4
|
-
class ModelInflator
|
5
|
-
include ::MarkdownRecord::PathUtilities
|
6
|
-
|
7
|
-
def initialize(source_models = nil)
|
8
|
-
@indexer = ::MarkdownRecord::Indexer.new
|
9
|
-
end
|
10
|
-
|
11
|
-
def where(filters, subdirectory = nil)
|
12
|
-
path = if subdirectory.nil?
|
13
|
-
file_path = base_rendered_path
|
14
|
-
file_path = "#{file_path}_fragments" if filters[:klass] == ::MarkdownRecord::ContentFragment
|
15
|
-
"#{file_path}.json"
|
16
|
-
else
|
17
|
-
file_path = subdirectory
|
18
|
-
file_path = "#{file_path}_fragments" if filters[:klass] == ::MarkdownRecord::ContentFragment
|
19
|
-
"#{base_rendered_path}/#{file_path}.json"
|
20
|
-
end
|
21
|
-
|
22
|
-
json = json_source(path)
|
23
|
-
json.delete(::MarkdownRecord::ContentFragment.json_klass) if filters.delete(:exclude_fragments)
|
24
|
-
json = filters[:klass].present? ? json[filters.delete(:klass).json_klass] : json.values.flatten
|
25
|
-
json ||= []
|
26
|
-
|
27
|
-
filtered_models = json.select do |model|
|
28
|
-
passes_filters?(model.with_indifferent_access, filters.dup)
|
29
|
-
end
|
30
|
-
|
31
|
-
filtered_models.map do |model|
|
32
|
-
model["type"].camelize.safe_constantize&.new(model)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def json_source(path)
|
37
|
-
if Pathname.new(path).exist?
|
38
|
-
json = JSON.parse(File.read(path))
|
39
|
-
return json
|
40
|
-
end
|
41
|
-
|
42
|
-
json = ::MarkdownRecord::JsonRenderer.new.render_models_for_subdirectory(subdirectory: "",:concat => true, :deep => true, :save => false, :render_content_fragment_json => true)
|
43
|
-
|
44
|
-
filename, subdirectory = full_path_to_parts(path)
|
45
|
-
|
46
|
-
tokens = subdirectory.gsub(base_rendered_root, "").split("/")
|
47
|
-
tokens << "#{filename}.concat"
|
48
|
-
json.dig(*tokens) || {}
|
49
|
-
end
|
50
|
-
|
51
|
-
def passes_filters?(attributes, filters)
|
52
|
-
passes = true
|
53
|
-
|
54
|
-
not_filters = filters.delete(:__not__)
|
55
|
-
or_filters = filters.delete(:__or__)
|
56
|
-
and_filters = filters.delete(:__and__)
|
57
|
-
|
58
|
-
filters.each do |key, value|
|
59
|
-
passes &&= passes_filter?(attributes, key, value)
|
60
|
-
end
|
61
|
-
|
62
|
-
not_filters&.each do |key, value|
|
63
|
-
passes &&= !passes_filter?(attributes, key, value)
|
64
|
-
end
|
65
|
-
|
66
|
-
or_temp = !or_filters&.any?
|
67
|
-
or_filters&.each do |sub_filter|
|
68
|
-
or_temp ||= passes_filters?(attributes, sub_filter.dup)
|
69
|
-
end
|
70
|
-
|
71
|
-
and_temp = true
|
72
|
-
and_filters&.each do |sub_filter|
|
73
|
-
and_temp &&= passes_filters?(attributes, sub_filter.dup)
|
74
|
-
end
|
75
|
-
|
76
|
-
passes &&= or_temp
|
77
|
-
passes &&= and_temp
|
78
|
-
passes
|
79
|
-
end
|
80
|
-
|
81
|
-
def passes_filter?(attributes, filter_key, filter_value)
|
82
|
-
case filter_value.class.name
|
83
|
-
when Array.name
|
84
|
-
filter_value.include?(attributes[filter_key])
|
85
|
-
when Symbol.name
|
86
|
-
if filter_value == :not_null
|
87
|
-
!attributes[filter_key].nil?
|
88
|
-
elsif filter_value == :null
|
89
|
-
attributes[filter_key].nil?
|
90
|
-
else
|
91
|
-
false
|
92
|
-
end
|
93
|
-
when Hash.name
|
94
|
-
if attributes[filter_key]&.class == ActiveSupport::HashWithIndifferentAccess
|
95
|
-
passes_filters?(attributes[filter_key], filter_value)
|
96
|
-
end
|
97
|
-
|
98
|
-
when nil.class.name
|
99
|
-
attributes[filter_key].nil?
|
100
|
-
when Regexp.name
|
101
|
-
attributes[filter_key] =~ filter_value
|
102
|
-
else
|
103
|
-
filter_value == attributes[filter_key]
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
File without changes
|
File without changes
|