markdown_record 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +63 -43
  3. data/app/helpers/markdown_record/application_helper.rb +23 -0
  4. data/app/helpers/markdown_record/controller_helpers.rb +1 -1
  5. data/app/helpers/markdown_record/view_helpers.rb +9 -3
  6. data/{lib → app/models}/markdown_record/base.rb +10 -0
  7. data/{lib → app/models}/markdown_record/content_fragment.rb +17 -2
  8. data/lib/generators/markdown_record_generator.rb +6 -0
  9. data/lib/markdown_record/configuration.rb +4 -0
  10. data/lib/markdown_record/file_sorting/base.rb +25 -0
  11. data/lib/markdown_record/file_sorting/date_sorter.rb +14 -0
  12. data/lib/markdown_record/file_sorting/sem_ver_sorter.rb +47 -0
  13. data/lib/markdown_record/{association.rb → models/association.rb} +20 -3
  14. data/lib/markdown_record/{associations.rb → models/associations.rb} +17 -9
  15. data/lib/markdown_record/{content_associations.rb → models/content_associations.rb} +4 -2
  16. data/lib/markdown_record/models/filtering.rb +13 -0
  17. data/lib/markdown_record/models/filters/array_filter.rb +11 -0
  18. data/lib/markdown_record/models/filters/base_filter.rb +35 -0
  19. data/lib/markdown_record/models/filters/hash_filter.rb +81 -0
  20. data/lib/markdown_record/models/filters/nil_filter.rb +11 -0
  21. data/lib/markdown_record/models/filters/range_filter.rb +11 -0
  22. data/lib/markdown_record/models/filters/regexp_filter.rb +11 -0
  23. data/lib/markdown_record/models/filters/symbol_filter.rb +14 -0
  24. data/lib/markdown_record/models/filters.rb +22 -0
  25. data/lib/markdown_record/models/model_inflator.rb +65 -0
  26. data/lib/markdown_record/path_utilities.rb +20 -11
  27. data/lib/markdown_record/rendering/content_dsl/attribute.rb +22 -0
  28. data/lib/markdown_record/{content_dsl → rendering/content_dsl}/directory_fragment.rb +3 -3
  29. data/lib/markdown_record/{content_dsl → rendering/content_dsl}/disable.rb +2 -2
  30. data/lib/markdown_record/{content_dsl → rendering/content_dsl}/enable.rb +2 -2
  31. data/lib/markdown_record/{content_dsl → rendering/content_dsl}/end_attribute.rb +3 -3
  32. data/lib/markdown_record/{content_dsl → rendering/content_dsl}/end_model.rb +3 -3
  33. data/lib/markdown_record/{content_dsl → rendering/content_dsl}/fragment.rb +3 -3
  34. data/lib/markdown_record/rendering/content_dsl/model.rb +22 -0
  35. data/lib/markdown_record/rendering/content_dsl/scope.rb +22 -0
  36. data/lib/markdown_record/{content_dsl → rendering/content_dsl}/use_layout.rb +3 -3
  37. data/lib/markdown_record/rendering/content_dsl.rb +45 -0
  38. data/lib/markdown_record/rendering/html_renderer.rb +22 -0
  39. data/lib/markdown_record/{indexer.rb → rendering/indexer.rb} +0 -10
  40. data/lib/markdown_record/rendering/json_renderer.rb +20 -0
  41. data/lib/markdown_record/rendering/nodes/html_base.rb +95 -0
  42. data/lib/markdown_record/rendering/nodes/html_directory.rb +51 -0
  43. data/lib/markdown_record/rendering/nodes/html_file.rb +48 -0
  44. data/lib/markdown_record/rendering/nodes/json_base.rb +55 -0
  45. data/lib/markdown_record/rendering/nodes/json_directory.rb +69 -0
  46. data/lib/markdown_record/rendering/nodes/json_file.rb +172 -0
  47. data/lib/markdown_record/{rendering.rb → rendering/rendering.rb} +1 -1
  48. data/lib/markdown_record/{validator.rb → rendering/validator.rb} +4 -4
  49. data/lib/markdown_record/version.rb +1 -1
  50. data/lib/markdown_record.rb +21 -14
  51. data/templates/demo/content/10_custom_models_and_associations.md.erb +27 -7
  52. data/templates/demo/content/11_controller_helpers.md.erb +2 -2
  53. data/templates/demo/content/12_configuration.md.erb +22 -3
  54. data/templates/demo/content/13_sandbox/1_foo.md +2 -1
  55. data/templates/demo/content/13_sandbox/2_sandbox_nested/1_bar.md +4 -1
  56. data/templates/demo/content/1_home.md.erb +30 -13
  57. data/templates/demo/content/2_installation.md.erb +61 -46
  58. data/templates/demo/content/3_rendering_basics.md.erb +3 -3
  59. data/templates/demo/content/4_content_dsl.md.erb +22 -11
  60. data/templates/demo/content/5_routes.md.erb +10 -7
  61. data/templates/demo/content/6_model_basics.md.erb +11 -11
  62. data/templates/demo/content/7_content_frags.md.erb +9 -6
  63. data/templates/demo/content/8_erb_syntax_and_view_helpers.md.erb +32 -11
  64. data/templates/demo/content/9_layouts.md.erb +3 -3
  65. data/templates/demo/layouts/_global_layout.html.erb +1 -0
  66. data/templates/demo/models/dsl_command.rb +6 -0
  67. data/templates/demo/models/section.rb +5 -0
  68. data/templates/render_content.thor +2 -1
  69. data/templates/tests/assets/images/ruby-logo.png +0 -0
  70. data/templates/tests/content/1_test_files_home.md.erb +31 -0
  71. data/templates/tests/content/2_content_dsl_tests/1_content_dsl.md.erb +162 -0
  72. data/templates/tests/content/2_content_dsl_tests/2_nested_directory/1_associations.md.erb +83 -0
  73. data/templates/tests/layouts/_concatenated_layout.html.erb +12 -0
  74. data/templates/tests/layouts/_custom_layout.html.erb +14 -0
  75. data/templates/tests/layouts/_file_layout.html.erb +15 -0
  76. data/templates/tests/layouts/_global_layout.html.erb +116 -0
  77. metadata +53 -34
  78. data/app/models/markdown_record/demo/dsl_command.rb +0 -10
  79. data/app/models/markdown_record/demo/section.rb +0 -9
  80. data/app/models/markdown_record/tests/child_model.rb +0 -15
  81. data/app/models/markdown_record/tests/fake_active_record_model.rb +0 -13
  82. data/app/models/markdown_record/tests/model.rb +0 -15
  83. data/app/models/markdown_record/tests/other_child_model.rb +0 -15
  84. data/lib/markdown_record/cli.rb +0 -54
  85. data/lib/markdown_record/content_dsl/attribute.rb +0 -22
  86. data/lib/markdown_record/content_dsl/model.rb +0 -23
  87. data/lib/markdown_record/content_dsl/render_format.rb +0 -22
  88. data/lib/markdown_record/content_dsl/render_strategy.rb +0 -22
  89. data/lib/markdown_record/content_dsl.rb +0 -37
  90. data/lib/markdown_record/html_renderer.rb +0 -194
  91. data/lib/markdown_record/json_renderer.rb +0 -270
  92. data/lib/markdown_record/model_inflator.rb +0 -107
  93. data/lib/markdown_record/routes_renderer.rb +0 -0
  94. /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