openstax_kitchen 4.0.0 → 4.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +1 -1
- data/lib/kitchen/directions/bake_chapter_references/main.rb +16 -0
- data/lib/kitchen/directions/bake_chapter_references/v1.rb +35 -0
- data/lib/kitchen/patches/nokogiri.rb +40 -0
- data/lib/kitchen/selector.rb +1 -1
- data/lib/kitchen/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dacc1aae587e492dc42e693e46195c0ed10ba749f62929e322b0744f2f82e94c
|
4
|
+
data.tar.gz: 67b4f9691c4431fc172d48381527c1fd75c62dc866ea056ff6666205e73b0e22
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a788770e4176617a260d8b2ce265303a59490dd1e95727bd38102732ce6459e3600a9eca807e6c80d364b3fb710c2dbce4ec71b66dbec6570b2d61ed8e00e40
|
7
|
+
data.tar.gz: 6df9ea776c2718b1d7fdc8508210774c29f407391e0802ac6e39a94b98aadfbdb6d47447f0f2a164a66413e122ba7b46e7669fd4af5caeeda26ac0cc591919ff
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [4.1.0] - 2021-05-18
|
10
|
+
|
11
|
+
* Fixed performance problem with element class detection (patch)
|
12
|
+
* Added `BakeChapterReferences` Directions (minor)
|
13
|
+
|
9
14
|
## [4.0.0] - 2021-05-18
|
10
15
|
|
11
16
|
* Changes `default_css_or_xpath` to optionally be a proc to be evaluated w.r.t. a document's config (minor)
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Kitchen
|
4
|
+
module Directions
|
5
|
+
module BakeChapterReferences
|
6
|
+
def self.v1(chapter:, metadata_source:, uuid_prefix: '.', klass: 'references')
|
7
|
+
V1.new.bake(
|
8
|
+
chapter: chapter,
|
9
|
+
metadata_source: metadata_source,
|
10
|
+
uuid_prefix: uuid_prefix,
|
11
|
+
klass: klass
|
12
|
+
)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Kitchen::Directions::BakeChapterReferences
|
4
|
+
class V1
|
5
|
+
renderable
|
6
|
+
|
7
|
+
def bake(chapter:, metadata_source:, uuid_prefix: '.', klass: 'references')
|
8
|
+
@metadata = metadata_source.children_to_keep.copy
|
9
|
+
@klass = klass
|
10
|
+
@title = I18n.t(:references)
|
11
|
+
@uuid_prefix = uuid_prefix
|
12
|
+
|
13
|
+
chapter.references.search('h3').trash
|
14
|
+
|
15
|
+
chapter.non_introduction_pages.each do |page|
|
16
|
+
references = page.references
|
17
|
+
next if references.none?
|
18
|
+
|
19
|
+
references.search('h3').trash
|
20
|
+
title = Kitchen::Directions::EocSectionTitleLinkSnippet.v1(page: page)
|
21
|
+
|
22
|
+
references.each do |reference|
|
23
|
+
reference.prepend(child: title)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
@content = chapter.pages.references.cut.paste
|
28
|
+
|
29
|
+
@in_composite_chapter = false
|
30
|
+
|
31
|
+
chapter.append(child: render(file:
|
32
|
+
'../../templates/eoc_section_title_template.xhtml.erb'))
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -43,6 +43,46 @@ module Nokogiri
|
|
43
43
|
def inspect
|
44
44
|
to_s
|
45
45
|
end
|
46
|
+
|
47
|
+
def quick_matches?(selector)
|
48
|
+
self.class.selector_to_css_nodes(selector).any? { |css_node| matches_css_node?(css_node) }
|
49
|
+
end
|
50
|
+
|
51
|
+
def classes
|
52
|
+
self[:class]&.split || []
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.selector_to_css_nodes(selector)
|
56
|
+
# No need to parse the same selector more than once.
|
57
|
+
@parsed_selectors ||= {}
|
58
|
+
@parsed_selectors[selector] ||= Nokogiri::CSS::Parser.new.parse(selector)
|
59
|
+
end
|
60
|
+
|
61
|
+
protected
|
62
|
+
|
63
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
64
|
+
def matches_css_node?(css_node)
|
65
|
+
case css_node.type
|
66
|
+
when :CONDITIONAL_SELECTOR
|
67
|
+
css_node.value.all? { |inner_css_node| matches_css_node?(inner_css_node) }
|
68
|
+
when :ELEMENT_NAME
|
69
|
+
css_node.value == ['*'] || css_node.value.include?(name)
|
70
|
+
when :CLASS_CONDITION
|
71
|
+
(css_node.value & classes).any?
|
72
|
+
when :ATTRIBUTE_CONDITION
|
73
|
+
attribute, operator, value = css_node.value
|
74
|
+
|
75
|
+
raise "Unknown attribute condition operator in #{css_node}" if operator != :equal
|
76
|
+
|
77
|
+
attribute_name = attribute.value
|
78
|
+
raise "More attribute names than expected, #{attribute_name}" if attribute_name.many?
|
79
|
+
|
80
|
+
self[attribute_name.first] == value.gsub('"', '').gsub("'", '')
|
81
|
+
else
|
82
|
+
raise "Unknown Nokogiri::CSS:Node type in #{css_node}"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
46
86
|
end
|
47
87
|
end
|
48
88
|
end
|
data/lib/kitchen/selector.rb
CHANGED
@@ -18,7 +18,7 @@ module Kitchen
|
|
18
18
|
def matches?(node, config:)
|
19
19
|
# This may not be incredibly efficient as it does a search of this node's
|
20
20
|
# ancestors to see if the node is in the results. Watch the performance.
|
21
|
-
node.
|
21
|
+
node.quick_matches?(call(config))
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
data/lib/kitchen/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openstax_kitchen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JP Slavinsky
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-05-
|
11
|
+
date: 2021-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -233,6 +233,8 @@ files:
|
|
233
233
|
- lib/kitchen/directions/bake_chapter_key_concepts/main.rb
|
234
234
|
- lib/kitchen/directions/bake_chapter_key_concepts/v1.rb
|
235
235
|
- lib/kitchen/directions/bake_chapter_key_equations.rb
|
236
|
+
- lib/kitchen/directions/bake_chapter_references/main.rb
|
237
|
+
- lib/kitchen/directions/bake_chapter_references/v1.rb
|
236
238
|
- lib/kitchen/directions/bake_chapter_section_exercises/main.rb
|
237
239
|
- lib/kitchen/directions/bake_chapter_section_exercises/v1.rb
|
238
240
|
- lib/kitchen/directions/bake_chapter_summary.rb
|