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.
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