Class: Antoinette::Weaver
- Inherits:
-
Object
- Object
- Antoinette::Weaver
- Defined in:
- lib/antoinette/services/weaver.rb
Defined Under Namespace
Classes: Bundle
Instance Method Summary collapse
- #bundles ⇒ Object
- #generate_json ⇒ Object
-
#initialize(elm_analyzer: ElmAppUsageAnalyzer.new, partial_resolver: PartialResolver.new, layout_resolver: LayoutResolver.new, custom_view_paths: []) ⇒ Weaver
constructor
A new instance of Weaver.
- #resolve_templates_from_partials(templates) ⇒ Object
Constructor Details
#initialize(elm_analyzer: ElmAppUsageAnalyzer.new, partial_resolver: PartialResolver.new, layout_resolver: LayoutResolver.new, custom_view_paths: []) ⇒ Weaver
Returns a new instance of Weaver.
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/antoinette/services/weaver.rb', line 10 def initialize( elm_analyzer: ElmAppUsageAnalyzer.new, partial_resolver: PartialResolver.new, layout_resolver: LayoutResolver.new, custom_view_paths: [] ) @elm_analyzer = elm_analyzer @partial_resolver = partial_resolver @layout_resolver = layout_resolver @custom_view_paths = custom_view_paths end |
Instance Method Details
#bundles ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/antoinette/services/weaver.rb', line 22 def bundles @bundles ||= begin result = [] @elm_analyzer.mappings.each do |page_apps, templates| resolved = resolve_templates_from_partials(templates) groups = resolved.group_by { |t| @layout_resolver.apps_for(t) } groups.each do |layout_apps, group_templates| merged = (page_apps + layout_apps).uniq.sort result << Bundle.new(Haikunator.haikunate, merged, group_templates.sort) end end result.sort_by { |b| -b.elm_apps.count } end end |
#generate_json ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/antoinette/services/weaver.rb', line 37 def generate_json output = {bundles: bundles.map do |bundle| { name: bundle.name, elm_apps: bundle.elm_apps, templates: bundle.templates } end} output[:custom_view_paths] = @custom_view_paths if @custom_view_paths.any? JSON.pretty_generate(output) end |
#resolve_templates_from_partials(templates) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/antoinette/services/weaver.rb', line 49 def resolve_templates_from_partials(templates) templates.flat_map do |template| if template.start_with?("_") || template.include?("/_") partial_path = template.sub(%r{^app/views/}, "") @partial_resolver.resolve(partial_path).map do |parent| "app/views/#{parent}" end else template end end.uniq end |