klenod-build 0.0.10 → 0.0.11

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 58fe212ce18825d676c6661925007d46a8e7c68785f1c4b2af82e377fdc25f94
4
- data.tar.gz: fa1abefa0576d6e2944bb240597f10abc979e19004af881c4c8bc90e261a3d5c
3
+ metadata.gz: 971caae6ad82448ab179cd8dc98c0920ac4422a2eea50a11d9a67c1097ecda7c
4
+ data.tar.gz: 8b1e33ab86a8c09a8a659d3caf68cf093b5adb7f33b3c6d988a85913ca865bbd
5
5
  SHA512:
6
- metadata.gz: d2178c1a71530cbc648000abf216ee1f72495006bf41626e0c9e592dda97985921fb41e4714c10ff08e87889b1d7ab6334815531922248d5ac51dcf155177732
7
- data.tar.gz: 0ddc8e894a70a6cf94aa9100ded80f4833c1ce64824ea10557a1dcf1cb2f2e7aff89bb2084763222f81559b1a04d33229bda4bcd98bfedb537d73ea334cc0aa6
6
+ metadata.gz: a664ddf7e161448788a7c5b3c8680acb07b12a16edeaccf9640cd260d8613457e096621ec2649ad3c7c6196364d353436bad856de1e390cb61a45142d6f7423e
7
+ data.tar.gz: eedab53d4360f66b32ff8397f280ce57b9d620d5a54fed5379a7aece96444cea1ef6a98219f5964fa2b7c931b5fce55f252ca62207f3a038bce9d314791e166f
@@ -216,7 +216,7 @@ module Klenod
216
216
  measure_compile(:haml_build_expression_list) { builder.expressions(expressions) }
217
217
  end
218
218
 
219
- def compile_node_expressions(nodes, factory:, builder:, markdown_compiler:, styleable: false)
219
+ def compile_node_expressions(nodes, factory:, builder:, markdown_compiler:, styleable: false, join_adjacent_plain_text: false)
220
220
  expressions = []
221
221
  previous_node = nil
222
222
  index = 0
@@ -224,7 +224,21 @@ module Klenod
224
224
  while index < nodes.length
225
225
  node = nodes[index]
226
226
 
227
- if script_node?(node) && !continuation?(node)
227
+ if join_adjacent_plain_text && node.type == :plain
228
+ plain_nodes = [node]
229
+ index += 1
230
+
231
+ while index < nodes.length && nodes[index].type == :plain
232
+ plain_nodes << nodes[index]
233
+ index += 1
234
+ end
235
+
236
+ text = plain_nodes.map { it.value.fetch(:text).strip }.reject(&:empty?).join(" ")
237
+ next if text.empty?
238
+
239
+ expression = builder.marked_expression(source_mark(plain_nodes.first, builder: builder), builder.literal(text))
240
+ node = plain_nodes.last
241
+ elsif script_node?(node) && !continuation?(node)
228
242
  group = [node]
229
243
  index += 1
230
244
 
@@ -453,7 +467,14 @@ module Klenod
453
467
  unless node.children.empty?
454
468
  children.concat(
455
469
  measure_compile_detail(:haml_compile_tag_children) do
456
- compile_node_expressions(node.children, factory: factory, styleable: styleable, builder: builder, markdown_compiler: markdown_compiler)
470
+ compile_node_expressions(
471
+ node.children,
472
+ factory: factory,
473
+ styleable: styleable,
474
+ builder: builder,
475
+ markdown_compiler: markdown_compiler,
476
+ join_adjacent_plain_text: true
477
+ )
457
478
  end
458
479
  )
459
480
  end
@@ -602,35 +623,40 @@ module Klenod
602
623
 
603
624
  def dynamic_attributes(node, builder:, props:)
604
625
  dynamic_attributes = node.value.fetch(:dynamic_attributes)
605
- source = dynamic_attributes.old || dynamic_attributes.new
606
- return {} unless source
626
+ sources = [dynamic_attributes.new, dynamic_attributes.old].compact
627
+ return {} if sources.empty?
607
628
 
608
629
  measure_compile(:haml_compile_dynamic_attributes) do
609
- source = builder.line_rewritten_source(source, node.line)
610
- simple = simple_dynamic_attributes(source, builder: builder) unless @event_handler
611
- if simple
612
- simple.each { |key, value| props[key] = value }
613
- return simple
614
- end
615
-
616
- hash = builder.hash_expression(source, line_no: node.line)
617
- unless hash
618
- builder.ruby_parse_error(source, line_no: node.line, context: "Could not parse Haml dynamic attributes")
619
- end
620
-
621
630
  dynamic = {}
622
- hash.node.assocs.each do |assoc|
623
- if assoc.is_a?(SyntaxTree::AssocSplat)
624
- splat_source = hash.source[assoc.value.location.start_char...assoc.value.location.end_char]
625
- props[ATTRIBUTE_SPLATS_KEY] ||= []
626
- props[ATTRIBUTE_SPLATS_KEY] << builder.expression(splat_source)
631
+ sources.each do |source|
632
+ source = builder.line_rewritten_source(source, node.line)
633
+ simple = simple_dynamic_attributes(source, builder: builder) unless @event_handler
634
+ if simple
635
+ simple.each do |key, value|
636
+ dynamic[key] = value
637
+ props[key] = value
638
+ end
627
639
  next
628
640
  end
629
641
 
630
- key = attribute_key(assoc.key, builder: builder)
631
- value = event_handler_value(key, assoc.value, builder: builder) || attribute_value(assoc, builder: builder)
632
- dynamic[key] = value
633
- props[key] = value
642
+ hash = builder.hash_expression(source, line_no: node.line)
643
+ unless hash
644
+ builder.ruby_parse_error(source, line_no: node.line, context: "Could not parse Haml dynamic attributes")
645
+ end
646
+
647
+ hash.node.assocs.each do |assoc|
648
+ if assoc.is_a?(SyntaxTree::AssocSplat)
649
+ splat_source = hash.source[assoc.value.location.start_char...assoc.value.location.end_char]
650
+ props[ATTRIBUTE_SPLATS_KEY] ||= []
651
+ props[ATTRIBUTE_SPLATS_KEY] << builder.expression(splat_source)
652
+ next
653
+ end
654
+
655
+ key = attribute_key(assoc.key, builder: builder)
656
+ value = event_handler_value(key, assoc.value, builder: builder) || attribute_value(assoc, builder: builder)
657
+ dynamic[key] = value
658
+ props[key] = value
659
+ end
634
660
  end
635
661
  dynamic
636
662
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Klenod
4
4
  module Build
5
- VERSION = "0.0.10"
5
+ VERSION = "0.0.11"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: klenod-build
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrés Alin
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.0.10
18
+ version: 0.0.11
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 0.0.10
25
+ version: 0.0.11
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: async
28
28
  requirement: !ruby/object:Gem::Requirement