openstax_kitchen 11.0.0 → 11.1.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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/Gemfile.lock +1 -1
  4. data/lib/kitchen/composite_page_element.rb +8 -0
  5. data/lib/kitchen/directions/bake_chapter_introductions/bake_chapter_objectives.rb +46 -0
  6. data/lib/kitchen/directions/bake_chapter_introductions/bake_chapter_outline.rb +14 -0
  7. data/lib/kitchen/directions/bake_chapter_introductions/main.rb +43 -0
  8. data/lib/kitchen/directions/bake_chapter_introductions/v1.rb +56 -0
  9. data/lib/kitchen/directions/bake_chapter_introductions/v2.rb +91 -0
  10. data/lib/kitchen/directions/bake_custom_sections/main.rb +14 -0
  11. data/lib/kitchen/directions/bake_custom_sections/v1.rb +42 -0
  12. data/lib/kitchen/directions/bake_equations.rb +2 -3
  13. data/lib/kitchen/directions/bake_example.rb +4 -5
  14. data/lib/kitchen/directions/bake_figure.rb +5 -3
  15. data/lib/kitchen/directions/bake_iframes/main.rb +11 -0
  16. data/lib/kitchen/directions/bake_iframes/v1.rb +25 -0
  17. data/lib/kitchen/directions/bake_index/main.rb +2 -2
  18. data/lib/kitchen/directions/bake_index/v1.rb +39 -7
  19. data/lib/kitchen/directions/bake_index/v1.xhtml.erb +3 -3
  20. data/lib/kitchen/directions/bake_injected_exercise.rb +18 -0
  21. data/lib/kitchen/directions/bake_injected_exercise_question.rb +71 -0
  22. data/lib/kitchen/directions/bake_link_placeholders.rb +15 -2
  23. data/lib/kitchen/directions/bake_lists_with_para.rb +3 -3
  24. data/lib/kitchen/directions/bake_notes/bake_autotitled_notes.rb +5 -5
  25. data/lib/kitchen/directions/bake_notes/bake_note_subtitle.rb +6 -2
  26. data/lib/kitchen/directions/bake_notes/bake_numbered_notes/main.rb +13 -3
  27. data/lib/kitchen/directions/bake_notes/bake_numbered_notes/v1.rb +29 -25
  28. data/lib/kitchen/directions/bake_notes/bake_numbered_notes/v2.rb +22 -17
  29. data/lib/kitchen/directions/bake_notes/bake_numbered_notes/v3.rb +27 -22
  30. data/lib/kitchen/directions/bake_numbered_exercise/main.rb +3 -2
  31. data/lib/kitchen/directions/bake_numbered_exercise/v1.rb +6 -24
  32. data/lib/kitchen/directions/bake_numbered_table/bake_table_body.rb +3 -3
  33. data/lib/kitchen/directions/bake_numbered_table/main.rb +4 -4
  34. data/lib/kitchen/directions/bake_numbered_table/v1.rb +3 -3
  35. data/lib/kitchen/directions/bake_numbered_table/v2.rb +3 -3
  36. data/lib/kitchen/directions/bake_toc.rb +1 -1
  37. data/lib/kitchen/directions/move_solutions_to_answer_key/move_solutions_from_exercise_section.rb +1 -7
  38. data/lib/kitchen/directions/move_solutions_to_answer_key/move_solutions_from_numbered_note.rb +1 -7
  39. data/lib/kitchen/directions/move_solutions_to_answer_key/strategies/contemporary_math.rb +17 -0
  40. data/lib/kitchen/element_base.rb +38 -2
  41. data/lib/kitchen/element_enumerator_base.rb +35 -0
  42. data/lib/kitchen/injected_question_element.rb +77 -0
  43. data/lib/kitchen/injected_question_element_enumerator.rb +21 -0
  44. data/lib/kitchen/selectors/base.rb +6 -0
  45. data/lib/kitchen/selectors/standard_1.rb +3 -0
  46. data/lib/kitchen/solution_element_enumerator.rb +21 -0
  47. data/lib/kitchen/version.rb +1 -1
  48. data/lib/locales/en.yml +6 -4
  49. data/lib/locales/es.yml +5 -4
  50. data/lib/locales/pl.yml +52 -7
  51. metadata +17 -6
  52. data/lib/kitchen/directions/bake_chapter_introductions/chapter_introduction.xhtml.erb +0 -0
  53. data/lib/kitchen/directions/bake_chapter_introductions.rb +0 -65
  54. data/lib/kitchen/directions/bake_notes/bake_note_iframes.rb +0 -27
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kitchen
4
+ # An enumerator for example elements
5
+ #
6
+ class InjectedQuestionElementEnumerator < ElementEnumeratorBase
7
+
8
+ # Returns a factory for this enumerator
9
+ #
10
+ # @return [ElementEnumeratorFactory]
11
+ #
12
+ def self.factory
13
+ ElementEnumeratorFactory.new(
14
+ default_css_or_xpath: Selector.named(:injected_question),
15
+ sub_element_class: InjectedQuestionElement,
16
+ enumerator_class: self
17
+ )
18
+ end
19
+
20
+ end
21
+ end
@@ -56,6 +56,12 @@ module Kitchen
56
56
  # Selector for an unit
57
57
  # @return [String]
58
58
  attr_accessor :unit
59
+ # Selector for an unit
60
+ # @return [String]
61
+ attr_accessor :solution
62
+ # Selector for an injected question
63
+ # @return [String]
64
+ attr_accessor :injected_question
59
65
 
60
66
  # Override specific selectors
61
67
  #
@@ -26,6 +26,9 @@ module Kitchen
26
26
  self.example = "div[data-type='example']"
27
27
  self.exercise = "div[data-type='exercise']"
28
28
  self.unit = "div[data-type='unit']"
29
+ self.solution = "div[data-type='solution'], " \
30
+ "div[data-type='question-solution']"
31
+ self.injected_question = "div[data-type='exercise-question']"
29
32
  end
30
33
 
31
34
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kitchen
4
+ # An enumerator for table elements
5
+ #
6
+ class SolutionElementEnumerator < ElementEnumeratorBase
7
+
8
+ # Returns a factory for this enumerator
9
+ #
10
+ # @return [ElementEnumeratorFactory]
11
+ #
12
+ def self.factory
13
+ ElementEnumeratorFactory.new(
14
+ default_css_or_xpath: Selector.named(:solution),
15
+ sub_element_class: Element,
16
+ enumerator_class: self
17
+ )
18
+ end
19
+
20
+ end
21
+ 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 = '11.0.0'
6
+ VERSION = '11.1.0'
7
7
  end
data/lib/locales/en.yml CHANGED
@@ -1,13 +1,13 @@
1
1
  en:
2
2
  figure: Figure
3
- table_label: Table
3
+ table: Table
4
4
  appendix: Appendix
5
5
  theorem: Theorem
6
6
  solution: Solution
7
7
  chapter_outline: Chapter Outline
8
8
  toc_title: Contents
9
- example_label: Example
10
- exercise_label: Exercise
9
+ example: Example
10
+ exercise: Exercise
11
11
  equation: Equation
12
12
  chapter: Chapter
13
13
  unit: Unit
@@ -22,7 +22,6 @@ en:
22
22
  eoc_composite_metadata_title: Chapter Review
23
23
  eoc_solutions_title: Solutions
24
24
  eoc_suggested_reading: Suggestions for Further Study
25
- eob_index_title: Index
26
25
  eob_index_symbols_group: Symbols
27
26
  review_exercises: Review Exercises
28
27
  section_exercises: ! 'Section %{number} Exercises'
@@ -36,6 +35,9 @@ en:
36
35
  key-concepts: Key Concepts
37
36
  references: References
38
37
  solutions: Solutions
38
+ section-exercises: ! 'Section %{number} Exercises'
39
39
  folio:
40
40
  preface: Preface
41
41
  access_for_free: Access for free at openstax.org
42
+ index:
43
+ main: Index
data/lib/locales/es.yml CHANGED
@@ -1,13 +1,13 @@
1
1
  es:
2
2
  figure: Figura
3
- table_label: Tabla
3
+ table: Tabla
4
4
  appendix: Apéndice
5
5
  theorem: Teorema
6
6
  solution: Solución
7
7
  chapter_outline: Esquema Del Capitulo
8
8
  toc_title: Contenido
9
- example_label: Ejemplo
10
- exercise_label: Ejercicio
9
+ example: Ejemplo
10
+ exercise: Ejercicio
11
11
  equation: Ecuación
12
12
  chapter: Capítulo
13
13
  unit: Unidad
@@ -23,7 +23,6 @@ es:
23
23
  eoc_solutions_title: Soluciones
24
24
  eoc_key_concepts: Conceptos Clave
25
25
  eoc_suggested_reading: Sugerencias Para Estudios Adicionales
26
- eob_index_title: Índice
27
26
  eob_index_symbols_group: Símbolos
28
27
  review_exercises: Ejercicios De Repaso
29
28
  section_exercises: ! 'Sección %{number} Ejercicios'
@@ -36,3 +35,5 @@ es:
36
35
  folio:
37
36
  preface: Prefacio
38
37
  access_for_free: Acceso gratis en openstax.org
38
+ index:
39
+ main: Índice
data/lib/locales/pl.yml CHANGED
@@ -1,14 +1,57 @@
1
1
  pl:
2
- figure: Rysunek
3
- table_label: Tabela
2
+ figure:
3
+ nominative: Rysunek
4
+ genitive: Rysunku
5
+ dative: Rysunkowi
6
+ accusative: Rysunek
7
+ instrumental: Rysunkiem
8
+ locative: Rysunku
9
+ vocative: Rysunku
10
+ table:
11
+ nominative: Tabela
12
+ genitive: Tabeli
13
+ dative: Tabeli
14
+ accusative: Tabelę
15
+ instrumental: Tabelą
16
+ locative: Tabeli
17
+ vocative: Tabelo
18
+ example:
19
+ nominative: Przykład
20
+ genitive: Przykładu
21
+ dative: Przykładowi
22
+ accusative: Przykład
23
+ instrumental: Przykładem
24
+ locative: Przykładzie
25
+ vocative: Przykładzie
26
+ exercise:
27
+ nominative: Ćwiczenie
28
+ genitive: Ćwiczenia
29
+ dative: Ćwiczeniu
30
+ accusative: Ćwiczenie
31
+ instrumental: Ćwiczeniem
32
+ locative: Ćwiczeniu
33
+ vocative: Ćwiczenie
34
+ equation:
35
+ nominative: Równanie
36
+ genitive: Równania
37
+ dative: Równaniu
38
+ accusative: Równanie
39
+ instrumental: Równaniem
40
+ locative: Równaniu
41
+ vocative: Równanie
42
+ note:
43
+ nominative: Ramka
44
+ genitive: Ramki
45
+ dative: Ramce
46
+ accusative: Ramkę
47
+ instrumental: Ramką
48
+ locative: Ramce
49
+ vocative: Ramko
4
50
  appendix: Dodatek
5
51
  theorem: Twierdzenie
6
52
  solution: Rozwiązanie
7
53
  chapter_outline: Treść rozdziału
8
54
  toc_title: Spis treści
9
- example_label: Przykład
10
- exercise_label: Ćwiczenie
11
- equation: Równanie
12
55
  chapter: Rozdział
13
56
  unit: Część
14
57
  chapter_review: Podsumowanie rozdziału
@@ -17,7 +60,6 @@ pl:
17
60
  answer_key_title: Rozwiązania zadań
18
61
  eoc_chapter_review: Podsumowanie rozdziału
19
62
  eoc_solutions_title: Rozwiązania
20
- eob_index_title: Skorowidz rzeczowy
21
63
  eob_index_symbols_group: Symbole
22
64
  references: Bibliografia
23
65
  eoc:
@@ -25,4 +67,7 @@ pl:
25
67
  key-equations: Najważniejsze wzory
26
68
  summary: Podsumowanie
27
69
  references: Bibliografia
28
-
70
+ index:
71
+ name: Skorowidz nazwisk
72
+ term: Skorowidz rzeczowy
73
+ foreign: Skorowidz terminów obcojęzycznych
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: 11.0.0
4
+ version: 11.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-08-16 00:00:00.000000000 Z
11
+ date: 2021-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -248,8 +248,11 @@ files:
248
248
  - lib/kitchen/directions/bake_appendix.rb
249
249
  - lib/kitchen/directions/bake_chapter_glossary/main.rb
250
250
  - lib/kitchen/directions/bake_chapter_glossary/v1.rb
251
- - lib/kitchen/directions/bake_chapter_introductions.rb
252
- - lib/kitchen/directions/bake_chapter_introductions/chapter_introduction.xhtml.erb
251
+ - lib/kitchen/directions/bake_chapter_introductions/bake_chapter_objectives.rb
252
+ - lib/kitchen/directions/bake_chapter_introductions/bake_chapter_outline.rb
253
+ - lib/kitchen/directions/bake_chapter_introductions/main.rb
254
+ - lib/kitchen/directions/bake_chapter_introductions/v1.rb
255
+ - lib/kitchen/directions/bake_chapter_introductions/v2.rb
253
256
  - lib/kitchen/directions/bake_chapter_key_concepts/main.rb
254
257
  - lib/kitchen/directions/bake_chapter_key_concepts/v1.rb
255
258
  - lib/kitchen/directions/bake_chapter_key_equations.rb
@@ -265,6 +268,8 @@ files:
265
268
  - lib/kitchen/directions/bake_checkpoint.rb
266
269
  - lib/kitchen/directions/bake_composite_chapters.rb
267
270
  - lib/kitchen/directions/bake_composite_pages.rb
271
+ - lib/kitchen/directions/bake_custom_sections/main.rb
272
+ - lib/kitchen/directions/bake_custom_sections/v1.rb
268
273
  - lib/kitchen/directions/bake_eoc_section_content/change_subsection_title_tag.rb
269
274
  - lib/kitchen/directions/bake_eoc_section_content/remove_section_title.rb
270
275
  - lib/kitchen/directions/bake_equations.rb
@@ -280,16 +285,19 @@ files:
280
285
  - lib/kitchen/directions/bake_further_research.rb
281
286
  - lib/kitchen/directions/bake_handbook/main.rb
282
287
  - lib/kitchen/directions/bake_handbook/v1.rb
288
+ - lib/kitchen/directions/bake_iframes/main.rb
289
+ - lib/kitchen/directions/bake_iframes/v1.rb
283
290
  - lib/kitchen/directions/bake_index/main.rb
284
291
  - lib/kitchen/directions/bake_index/v1.rb
285
292
  - lib/kitchen/directions/bake_index/v1.xhtml.erb
293
+ - lib/kitchen/directions/bake_injected_exercise.rb
294
+ - lib/kitchen/directions/bake_injected_exercise_question.rb
286
295
  - lib/kitchen/directions/bake_inline_lists.rb
287
296
  - lib/kitchen/directions/bake_link_placeholders.rb
288
297
  - lib/kitchen/directions/bake_lists_with_para.rb
289
298
  - lib/kitchen/directions/bake_math_in_paragraph.rb
290
299
  - lib/kitchen/directions/bake_non_introduction_pages.rb
291
300
  - lib/kitchen/directions/bake_notes/bake_autotitled_notes.rb
292
- - lib/kitchen/directions/bake_notes/bake_note_iframes.rb
293
301
  - lib/kitchen/directions/bake_notes/bake_note_subtitle.rb
294
302
  - lib/kitchen/directions/bake_notes/bake_numbered_notes/main.rb
295
303
  - lib/kitchen/directions/bake_notes/bake_numbered_notes/v1.rb
@@ -358,6 +366,8 @@ files:
358
366
  - lib/kitchen/figure_element_enumerator.rb
359
367
  - lib/kitchen/i18n_string.rb
360
368
  - lib/kitchen/id_tracker.rb
369
+ - lib/kitchen/injected_question_element.rb
370
+ - lib/kitchen/injected_question_element_enumerator.rb
361
371
  - lib/kitchen/metadata_element.rb
362
372
  - lib/kitchen/metadata_element_enumerator.rb
363
373
  - lib/kitchen/mixins/block_error_if.rb
@@ -382,6 +392,7 @@ files:
382
392
  - lib/kitchen/selector.rb
383
393
  - lib/kitchen/selectors/base.rb
384
394
  - lib/kitchen/selectors/standard_1.rb
395
+ - lib/kitchen/solution_element_enumerator.rb
385
396
  - lib/kitchen/table_element.rb
386
397
  - lib/kitchen/table_element_enumerator.rb
387
398
  - lib/kitchen/templates/eob_section_title_template.xhtml.erb
@@ -447,7 +458,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
447
458
  - !ruby/object:Gem::Version
448
459
  version: '0'
449
460
  requirements: []
450
- rubygems_version: 3.0.3
461
+ rubygems_version: 3.0.3.1
451
462
  signing_key:
452
463
  specification_version: 4
453
464
  summary: OpenStax content baking library
@@ -1,65 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Kitchen
4
- module Directions
5
- module BakeChapterIntroductions
6
- def self.v1(book:, bake_chapter_objectives: true)
7
- book.chapters.each do |chapter|
8
- chapter_outline_html = ''
9
-
10
- if bake_chapter_objectives
11
- outline_items_html = chapter.non_introduction_pages.map do |page|
12
-
13
- <<~HTML
14
- <div class="os-chapter-objective">
15
- <a class="os-chapter-objective" href="##{page.title[:id]}">
16
- <span class="os-number">#{chapter.count_in(:book)}.#{page.count_in(:chapter)}</span>
17
- <span class="os-divider"> </span>
18
- <span data-type="" itemprop="" class="os-text">#{page.title.children[0].text}</span>
19
- </a>
20
- </div>
21
- HTML
22
- end.join('')
23
-
24
- chapter_outline_html = <<~HTML
25
- <div class="os-chapter-outline">
26
- <h3 class="os-title">#{I18n.t(:chapter_outline)}</h3>
27
- #{outline_items_html}
28
- </div>
29
- HTML
30
- end
31
-
32
- introduction_page = chapter.introduction_page
33
-
34
- introduction_page.search("div[data-type='description']").trash
35
- introduction_page.search("div[data-type='abstract']").trash
36
-
37
- title = introduction_page.title.cut
38
- title.name = 'h2'
39
- MoveTitleTextIntoSpan.v1(title: title)
40
-
41
- intro_content = introduction_page.search("> :not([data-type='metadata']):not(.splash):not(.has-splash)").cut
42
-
43
- introduction_page.append(child:
44
- <<~HTML
45
- <div class="intro-body">
46
- #{chapter_outline_html}
47
- <div class="intro-text">
48
- #{title.paste}
49
- #{intro_content.paste}
50
- </div>
51
- </div>
52
- HTML
53
- )
54
- end
55
-
56
- v1_update_selectors(book)
57
- end
58
-
59
- def self.v1_update_selectors(something_with_selectors)
60
- something_with_selectors.selectors.title_in_introduction_page =
61
- ".intro-text > [data-type='document-title']"
62
- end
63
- end
64
- end
65
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Kitchen
4
- module Directions
5
- module BakeNoteIFrames
6
- def self.v1(note:)
7
- iframes = note.search('iframe')
8
- return unless iframes.any?
9
-
10
- iframes.each do |iframe|
11
- iframe.wrap('<div class="os-has-iframe" data-type="alternatives">')
12
- iframe.add_class('os-is-iframe')
13
- link_ref = iframe[:src]
14
- next unless link_ref
15
-
16
- iframe = iframe.parent
17
- iframe.add_class('os-has-link')
18
- iframe.prepend(child:
19
- <<~HTML
20
- <a class="os-is-link" href="#{link_ref}" target="_window">#{I18n.t(:iframe_link_text)}</a>
21
- HTML
22
- )
23
- end
24
- end
25
- end
26
- end
27
- end