openstax_kitchen 16.0.0 → 17.0.0

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: 7796fb964e8a6ff796d9cf84220449681a89e5501e41e0a9a956620faf022d11
4
- data.tar.gz: 4b2c488ac82a05067c7353f274b9f94888125eb7f66cfa92f30db3c28e7ae29a
3
+ metadata.gz: 774e5af35ed15ba87d97802b8395412003291024053c9ed11aa66eaa4ba20712
4
+ data.tar.gz: eb371d8b10113005b69b5864c19fe8eed43aa5b9b965329cfcfdcc8a9287b842
5
5
  SHA512:
6
- metadata.gz: cc57439823f55ee6cdec35304a2bb4413a28afc5c98ae616effadec60095cfa964a4b9faa0380178f189c55771d1a1f28813268ce001349f29c3d1b44397d4ab
7
- data.tar.gz: d055f27db123b8e7441f45056e1c6f2a576ab56d1faa3bbdbb4af6a904674f1562e4403dd5e914a372fe67c5e969eb385838aab6f9ff9a5cbc8a0f5b20356df7
6
+ metadata.gz: c4953a8d928e31cf45116cb4ac8f5eb54ab06db3c5d91af038da6acefc1e643ab19a4a585fdfb3cf19de67f24ac3778e36aa972014a3b5f9397734b1c1498829
7
+ data.tar.gz: ad336376346ed97f0f924ef6fde9e41f0b7735fa920245fc58d1c7c679d88be72867af5dd6722c25bd6185fcdaa0b57708650dbb0ba94d6e3fa3da2b2751e19d
data/CHANGELOG.md CHANGED
@@ -6,12 +6,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [17.0.0] - 2021-12-3
10
+
11
+ * Create method in `Integer` class that generate roman numbers up to 100 (minor)
12
+ * Add more roman numbers to `Integer` class (patch)
13
+ * Create `V2` for `BakeChapterReferences` (minor)
14
+ * Create `BakeExercisePrefixes` direction adding prefixes for exercises in selected sections (minor)
15
+ * Add support for 'text-heavy-top-titled' tables in `BakeTableBody` (minor)
16
+ * Remove `Nokigiri#previous` patch, `ElementBase#previous` now uses `#previous_element` (minor)
17
+ * Modifies `BakeAnnotationClasses` for annotations wrapper to be a `span` intead of a `div` (major)
9
18
 
10
19
  ## [16.0.0] - 2021-11-19
11
20
 
12
21
  * Add reference link separator to `BakeReferences.v1` (patch)
13
22
  * Modify `BakeFootnotes` to be more general (minor)
14
23
  * Add `#preceded_by_text` method to element_base and the nokigiri patch (minor)
24
+ * Remove `Nokigiri#previous` patch, `ElementBase#previous` now uses `#previous_element` (minor)
15
25
  * Broaden caption selection for `BakeNumberedTable#v2` (patch)
16
26
  * Add details of question count to injected exercises in `BakeInjectedExercise` (major)
17
27
  * Add target labels to chapter content module pages option in `BakeNonIntroductionPages`, create a separate directory `BakeLOLinkLabels` to add `.label-text`, `.label-counter` spans wrappers for links with `.lo-reference` class (minor)
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- openstax_kitchen (16.0.0)
4
+ openstax_kitchen (17.0.0)
5
5
  activesupport
6
6
  i18n
7
7
  nokogiri
@@ -99,7 +99,7 @@ GEM
99
99
  tins (~> 1.0)
100
100
  tins (1.26.0)
101
101
  sync
102
- twitter_cldr (6.8.0)
102
+ twitter_cldr (6.9.0)
103
103
  camertron-eprun
104
104
  cldr-plurals-runtime-rb (~> 1.1)
105
105
  tzinfo
@@ -20,9 +20,18 @@ module Kitchen::Directions::BakeAnnotationClasses
20
20
  kinesthetic-icon]
21
21
  annotation_icon_classes.each do |annotation_icon_class|
22
22
  book.search("p.#{annotation_icon_class}").each do |annotation_with_icon_class|
23
- annotation_with_icon_class.search('div.os-icons').first.append(child:
23
+ annotation_with_icon_class.search('div.os-icons').first&.name = 'span'
24
+
25
+ icon_title = I18n.t(:"annotation_icons.#{annotation_icon_class}.title")
26
+
27
+ annotation_with_icon_class.search('span.os-icons').first.append(child:
24
28
  <<~HTML
25
- <span class = "#{annotation_icon_class}"></span>
29
+ <span
30
+ class = "#{annotation_icon_class}"
31
+ role="img"
32
+ title="#{icon_title}"
33
+ aria-label="#{icon_title}"
34
+ ></span>
26
35
  HTML
27
36
  )
28
37
  end
@@ -10,6 +10,14 @@ module Kitchen
10
10
  uuid_prefix: uuid_prefix,
11
11
  klass: klass)
12
12
  end
13
+
14
+ def self.v2(chapter:, metadata_source:, uuid_prefix: '.', klass: 'references')
15
+ V2.new.bake(
16
+ chapter: chapter,
17
+ metadata_source: metadata_source,
18
+ uuid_prefix: uuid_prefix,
19
+ klass: klass)
20
+ end
13
21
  end
14
22
  end
15
23
  end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kitchen::Directions::BakeChapterReferences
4
+ class V2
5
+ def bake(chapter:, metadata_source:, uuid_prefix: '.', klass: 'references')
6
+ chapter.pages.each do |page|
7
+ bake_page_cite(page: page)
8
+ bake_page_references(page: page)
9
+ end
10
+
11
+ return if chapter.pages.references.none?
12
+
13
+ content = chapter.pages.references.cut.paste
14
+
15
+ Kitchen::Directions::CompositePageContainer.v1(
16
+ container_key: klass,
17
+ uuid_key: "#{uuid_prefix}#{klass}",
18
+ metadata_source: metadata_source,
19
+ content: content,
20
+ append_to: chapter
21
+ )
22
+ end
23
+
24
+ def bake_page_cite(page:)
25
+ page.search('[data-type="cite"]').each do |link|
26
+ link.id = "#{page.id}-endNote#{link.count_in(:chapter)}"
27
+
28
+ link.prepend(child:
29
+ <<~HTML
30
+ <sup class="os-end-note-number">#{link.count_in(:chapter)}</sup>
31
+ HTML
32
+ )
33
+
34
+ link.search('.delete-me').trash
35
+ end
36
+ end
37
+
38
+ def bake_page_references(page:)
39
+ page.references.each do |reference|
40
+ Kitchen::Directions::RemoveSectionTitle.v1(section: reference)
41
+
42
+ reference.search('a').each do |ref_link|
43
+ ref_link.replace_children(with:
44
+ <<~HTML
45
+ <span>#{ref_link.count_in(:chapter)}.</span>
46
+ HTML
47
+ )
48
+ ref_link.href = "##{page.id}-endNote#{ref_link.count_in(:chapter)}"
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kitchen
4
+ module Directions
5
+ module BakeExercisePrefixes
6
+ def self.v1(chapter:, sections_prefixed:)
7
+ V1.new.bake(
8
+ chapter: chapter,
9
+ sections_prefixed: sections_prefixed
10
+ )
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kitchen::Directions::BakeExercisePrefixes
4
+ class V1
5
+ def bake(chapter:, sections_prefixed:)
6
+ sections_prefixed.each do |section_key|
7
+ chapter.composite_pages.each do |composite_page|
8
+ composite_page.search("section.#{section_key}").exercises.each do |exercise|
9
+ problem = exercise.problem
10
+ exercise_prefix =
11
+ "<span class='os-text'>#{I18n.t(:"sections_prefixed.#{section_key}")}</span>"
12
+ problem.prepend(child:
13
+ <<~HTML
14
+ #{exercise_prefix}
15
+ HTML
16
+ )
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -44,8 +44,9 @@ module Kitchen
44
44
  table.target_label(label_text: 'table', custom_content: number, cases: cases)
45
45
 
46
46
  if table.top_titled?
47
+ klass = table.text_heavy? ? 'text-heavy-top-titled' : 'top-titled'
47
48
  custom_table = CustomBody.new(table: table,
48
- klass: 'top-titled',
49
+ klass: klass,
49
50
  fake_title_class: 'os-table-title',
50
51
  fake_title: table.title,
51
52
  to_trash: table.title_row)
@@ -223,6 +223,22 @@ module Kitchen
223
223
  self[:'data-type']
224
224
  end
225
225
 
226
+ # Returns the element's href
227
+ #
228
+ # @return [String]
229
+ #
230
+ def href
231
+ self[:href]
232
+ end
233
+
234
+ # Sets the element's href
235
+ #
236
+ # @param value [String] the new value for the href
237
+ #
238
+ def href=(value)
239
+ self[:href] = value
240
+ end
241
+
226
242
  # A way to set values and chain them
227
243
  #
228
244
  # @param property [String, Symbol] the name of the property to set
@@ -511,7 +527,7 @@ module Kitchen
511
527
  # nil if there's no previous sibling
512
528
  #
513
529
  def previous
514
- prev = raw.previous
530
+ prev = raw.previous_element
515
531
  return prev if prev.nil?
516
532
 
517
533
  Element.new(
@@ -3,7 +3,22 @@
3
3
  # Monkey patches for +Integer+
4
4
  #
5
5
  class Integer
6
- ROMAN_NUMERALS = %w[0 i ii iii iv v vi vii viii ix x xi xii xiii xiv xv xvi xvii xviii xix xx].freeze
6
+
7
+ @roman_numerals = {
8
+ 100 => 'c',
9
+ 90 => 'xc',
10
+ 50 => 'l',
11
+ 40 => 'xl',
12
+ 10 => 'x',
13
+ 9 => 'ix',
14
+ 5 => 'v',
15
+ 4 => 'iv',
16
+ 1 => 'i'
17
+ }
18
+
19
+ class << self
20
+ attr_accessor :roman_numerals
21
+ end
7
22
 
8
23
  # Formats as different types of integers, including roman numerals.
9
24
  #
@@ -14,11 +29,25 @@ class Integer
14
29
  when :arabic
15
30
  to_s
16
31
  when :roman
17
- raise 'Unknown conversion to Roman numerals' if self >= ROMAN_NUMERALS.size
32
+ raise 'Unknown conversion to Roman numerals' if self > self.class.roman_numerals.keys.first
18
33
 
19
- ROMAN_NUMERALS[self]
34
+ to_roman
20
35
  else
21
36
  raise 'Unknown integer format'
22
37
  end
23
38
  end
39
+
40
+ def to_roman
41
+ return 0 if zero?
42
+
43
+ roman = ''
44
+ integer = self
45
+ self.class.roman_numerals.each do |number, letter|
46
+ until integer < number
47
+ roman += letter
48
+ integer -= number
49
+ end
50
+ end
51
+ roman
52
+ end
24
53
  end
@@ -67,13 +67,6 @@ module Nokogiri
67
67
  self[:class]&.split || []
68
68
  end
69
69
 
70
- def previous
71
- prev = previous_element
72
- return nil if prev.nil?
73
-
74
- prev.text? ? prev.previous : prev
75
- end
76
-
77
70
  def preceded_by_text?
78
71
  prev = previous_sibling
79
72
  while !prev.nil? && prev.blank? do prev = prev.previous_sibling end
@@ -3,5 +3,5 @@
3
3
  # A library for modifying the structure of OpenStax book XML.
4
4
  #
5
5
  module Kitchen
6
- VERSION = '16.0.0'
6
+ VERSION = '17.0.0'
7
7
  end
data/lib/locales/en.yml CHANGED
@@ -46,3 +46,18 @@ en:
46
46
  reference: References
47
47
  index:
48
48
  main: Index
49
+ annotation_icons:
50
+ linguistic-icon:
51
+ title: Language lens icon
52
+ culture-icon:
53
+ title: Culture lens icon
54
+ dreaming-icon:
55
+ title: Generating and capturing ideas icon
56
+ visual-icon:
57
+ title: Visual learning style icon
58
+ speech-icon:
59
+ title: Voice to text icon
60
+ auditory-icon:
61
+ title: Auditory learning style icon
62
+ kinesthetic-icon:
63
+ title: Kinesthetic learning style icon
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: 16.0.0
4
+ version: 17.0.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-11-19 00:00:00.000000000 Z
11
+ date: 2021-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -265,6 +265,7 @@ files:
265
265
  - lib/kitchen/directions/bake_chapter_key_equations.rb
266
266
  - lib/kitchen/directions/bake_chapter_references/main.rb
267
267
  - lib/kitchen/directions/bake_chapter_references/v1.rb
268
+ - lib/kitchen/directions/bake_chapter_references/v2.rb
268
269
  - lib/kitchen/directions/bake_chapter_section_exercises/main.rb
269
270
  - lib/kitchen/directions/bake_chapter_section_exercises/v1.rb
270
271
  - lib/kitchen/directions/bake_chapter_solutions/main.rb
@@ -281,6 +282,8 @@ files:
281
282
  - lib/kitchen/directions/bake_eoc_section_content/remove_section_title.rb
282
283
  - lib/kitchen/directions/bake_equations.rb
283
284
  - lib/kitchen/directions/bake_example.rb
285
+ - lib/kitchen/directions/bake_exercise_prefixes/main.rb
286
+ - lib/kitchen/directions/bake_exercise_prefixes/v1.rb
284
287
  - lib/kitchen/directions/bake_figure.rb
285
288
  - lib/kitchen/directions/bake_first_elements.rb
286
289
  - lib/kitchen/directions/bake_folio.rb