isodoc 1.0.22 → 1.0.27
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 +4 -4
- data/.github/workflows/macos.yml +12 -5
- data/.github/workflows/ubuntu.yml +27 -6
- data/.github/workflows/windows.yml +13 -7
- data/README.adoc +3 -2
- data/lib/isodoc-yaml/i18n-en.yaml +18 -1
- data/lib/isodoc-yaml/i18n-fr.yaml +18 -1
- data/lib/isodoc-yaml/i18n-zh-Hans.yaml +18 -1
- data/lib/isodoc/base_style/bands.scss +6 -3
- data/lib/isodoc/base_style/reset.scss +1 -1
- data/lib/isodoc/convert.rb +1 -0
- data/lib/isodoc/function/blocks.rb +5 -0
- data/lib/isodoc/function/cleanup.rb +12 -1
- data/lib/isodoc/function/i18n.rb +5 -5
- data/lib/isodoc/function/inline.rb +47 -12
- data/lib/isodoc/function/references.rb +47 -33
- data/lib/isodoc/function/reqt.rb +21 -6
- data/lib/isodoc/function/section.rb +18 -8
- data/lib/isodoc/function/table.rb +0 -1
- data/lib/isodoc/function/to_word_html.rb +4 -2
- data/lib/isodoc/function/utils.rb +10 -4
- data/lib/isodoc/function/xref_gen.rb +2 -1
- data/lib/isodoc/function/xref_sect_gen.rb +24 -24
- data/lib/isodoc/headlesshtml_convert.rb +5 -0
- data/lib/isodoc/html_convert.rb +5 -0
- data/lib/isodoc/html_function/footnotes.rb +2 -2
- data/lib/isodoc/html_function/html.rb +3 -0
- data/lib/isodoc/html_function/postprocess.rb +3 -2
- data/lib/isodoc/metadata.rb +30 -7
- data/lib/isodoc/metadata_date.rb +39 -0
- data/lib/isodoc/pdf_convert.rb +5 -0
- data/lib/isodoc/version.rb +1 -1
- data/lib/isodoc/word_convert.rb +5 -0
- data/lib/isodoc/word_function/body.rb +0 -4
- data/lib/isodoc/word_function/footnotes.rb +2 -2
- data/lib/isodoc/word_function/postprocess.rb +13 -2
- data/lib/isodoc/word_function/table.rb +1 -3
- data/lib/isodoc/xslfo_convert.rb +5 -0
- data/spec/isodoc/blocks_spec.rb +188 -8
- data/spec/isodoc/cleanup_spec.rb +181 -18
- data/spec/isodoc/i18n_spec.rb +12 -12
- data/spec/isodoc/inline_spec.rb +65 -5
- data/spec/isodoc/metadata_spec.rb +77 -2
- data/spec/isodoc/postproc_spec.rb +33 -11
- data/spec/isodoc/ref_spec.rb +12 -6
- data/spec/isodoc/section_spec.rb +220 -205
- data/spec/isodoc/table_spec.rb +24 -24
- data/spec/isodoc/terms_spec.rb +50 -6
- data/spec/isodoc/xref_spec.rb +64 -26
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68d6f17f0d5291c6c067bfc6a3a476885b80f128bdc9c4e3e3d8356c6af30482
|
4
|
+
data.tar.gz: 2710c48aa2fb9eeee44b586107b07884d52802a53fec81d69c0f3fb68fa988ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c38cb43027aa1a056d465660449a4a58e1a5b78474a5f0184fca4164f2af2480720329e5a7181fcc1731151ef15db71019aa9fc34175b779de517006bf85fa6
|
7
|
+
data.tar.gz: '09503b88edfb1db0b3def003bca81c356b40790014953a9bc08de680af8db75222ded714f43a1f6820ec30dbaa2e3f83ac2a5e386f3c757f0d639f086e0b4b2c'
|
data/.github/workflows/macos.yml
CHANGED
@@ -1,21 +1,28 @@
|
|
1
|
-
# Auto-generated
|
2
|
-
#
|
1
|
+
# Auto-generated by Cimas: Do not edit it manually!
|
2
|
+
# See https://github.com/metanorma/cimas
|
3
3
|
name: macos
|
4
4
|
|
5
5
|
on:
|
6
6
|
push:
|
7
7
|
branches: [ master ]
|
8
8
|
pull_request:
|
9
|
-
|
9
|
+
paths-ignore:
|
10
|
+
- .github/workflows/ubuntu.yml
|
11
|
+
- .github/workflows/windows.yml
|
10
12
|
|
11
13
|
jobs:
|
12
14
|
test-macos:
|
13
15
|
name: Test on Ruby ${{ matrix.ruby }} macOS
|
14
16
|
runs-on: macos-latest
|
17
|
+
continue-on-error: ${{ matrix.experimental }}
|
15
18
|
strategy:
|
16
19
|
fail-fast: false
|
17
20
|
matrix:
|
18
21
|
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
+
experimental: [false]
|
23
|
+
include:
|
24
|
+
- ruby: '2.7'
|
25
|
+
experimental: true
|
19
26
|
steps:
|
20
27
|
- uses: actions/checkout@master
|
21
28
|
- name: Use Ruby
|
@@ -30,10 +37,10 @@ jobs:
|
|
30
37
|
- name: Use Node
|
31
38
|
uses: actions/setup-node@v1
|
32
39
|
with:
|
33
|
-
node-version: '
|
40
|
+
node-version: '12'
|
34
41
|
- name: Install Puppeteer
|
35
42
|
run: |
|
36
|
-
npm install -g puppeteer
|
43
|
+
npm install -g puppeteer@3.0.1
|
37
44
|
- name: Run specs
|
38
45
|
run: |
|
39
46
|
bundle exec rake
|
@@ -1,21 +1,28 @@
|
|
1
|
-
# Auto-generated
|
2
|
-
#
|
1
|
+
# Auto-generated by Cimas: Do not edit it manually!
|
2
|
+
# See https://github.com/metanorma/cimas
|
3
3
|
name: ubuntu
|
4
4
|
|
5
5
|
on:
|
6
6
|
push:
|
7
7
|
branches: [ master ]
|
8
8
|
pull_request:
|
9
|
-
|
9
|
+
paths-ignore:
|
10
|
+
- .github/workflows/macos.yml
|
11
|
+
- .github/workflows/windows.yml
|
10
12
|
|
11
13
|
jobs:
|
12
14
|
test-linux:
|
13
15
|
name: Test on Ruby ${{ matrix.ruby }} Ubuntu
|
14
16
|
runs-on: ubuntu-latest
|
17
|
+
continue-on-error: ${{ matrix.experimental }}
|
15
18
|
strategy:
|
16
19
|
fail-fast: false
|
17
20
|
matrix:
|
18
21
|
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
+
experimental: [false]
|
23
|
+
include:
|
24
|
+
- ruby: '2.7'
|
25
|
+
experimental: true
|
19
26
|
steps:
|
20
27
|
- uses: actions/checkout@master
|
21
28
|
- name: Use Ruby
|
@@ -25,15 +32,29 @@ jobs:
|
|
25
32
|
architecture: 'x64'
|
26
33
|
- name: Update gems
|
27
34
|
run: |
|
28
|
-
gem install bundler
|
35
|
+
gem install bundler
|
29
36
|
bundle install --jobs 4 --retry 3
|
30
37
|
- name: Use Node
|
31
38
|
uses: actions/setup-node@v1
|
32
39
|
with:
|
33
|
-
node-version: '
|
40
|
+
node-version: '12'
|
34
41
|
- name: Install Puppeteer
|
35
42
|
run: |
|
36
|
-
|
43
|
+
sudo apt-get update
|
44
|
+
sudo apt-get install libgbm1
|
45
|
+
npm install -g puppeteer@3.0.1
|
37
46
|
- name: Run specs
|
38
47
|
run: |
|
39
48
|
bundle exec rake
|
49
|
+
- name: Trigger dependent repositories
|
50
|
+
if: github.ref == 'refs/heads/master' && matrix.ruby == '2.6'
|
51
|
+
env:
|
52
|
+
GH_USERNAME: ${{ secrets.PAT_USERNAME }}
|
53
|
+
GH_ACCESS_TOKEN: ${{ secrets.PAT_TOKEN }}
|
54
|
+
run: |
|
55
|
+
curl -LO --retry 3 https://raw.githubusercontent.com/metanorma/metanorma-build-scripts/master/trigger-gh-actions.sh
|
56
|
+
[[ -f ".github/workflows/dependent_repos.env" ]] && source .github/workflows/dependent_repos.env
|
57
|
+
for repo in $DEPENDENT_REPOS
|
58
|
+
do
|
59
|
+
sh trigger-gh-actions.sh $ORGANISATION $repo $GH_USERNAME $GH_ACCESS_TOKEN $GITHUB_REPOSITORY
|
60
|
+
done
|
@@ -1,21 +1,28 @@
|
|
1
|
-
# Auto-generated
|
2
|
-
#
|
1
|
+
# Auto-generated by Cimas: Do not edit it manually!
|
2
|
+
# See https://github.com/metanorma/cimas
|
3
3
|
name: windows
|
4
4
|
|
5
5
|
on:
|
6
6
|
push:
|
7
7
|
branches: [ master ]
|
8
8
|
pull_request:
|
9
|
-
|
9
|
+
paths-ignore:
|
10
|
+
- .github/workflows/macos.yml
|
11
|
+
- .github/workflows/ubuntu.yml
|
10
12
|
|
11
13
|
jobs:
|
12
14
|
test-windows:
|
13
15
|
name: Test on Ruby ${{ matrix.ruby }} Windows
|
14
16
|
runs-on: windows-latest
|
17
|
+
continue-on-error: ${{ matrix.experimental }}
|
15
18
|
strategy:
|
16
19
|
fail-fast: false
|
17
20
|
matrix:
|
18
21
|
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
+
experimental: [false]
|
23
|
+
include:
|
24
|
+
- ruby: '2.7'
|
25
|
+
experimental: true
|
19
26
|
steps:
|
20
27
|
- uses: actions/checkout@master
|
21
28
|
- name: Use Ruby
|
@@ -26,17 +33,16 @@ jobs:
|
|
26
33
|
- name: Update gems
|
27
34
|
shell: pwsh
|
28
35
|
run: |
|
29
|
-
gem install bundler
|
36
|
+
gem install bundler
|
30
37
|
bundle config --local path vendor/bundle
|
31
|
-
bundle update
|
32
38
|
bundle install --jobs 4 --retry 3
|
33
39
|
- name: Use Node
|
34
40
|
uses: actions/setup-node@v1
|
35
41
|
with:
|
36
|
-
node-version: '
|
42
|
+
node-version: '12'
|
37
43
|
- name: Install Puppeteer
|
38
44
|
run: |
|
39
|
-
npm install -g puppeteer
|
45
|
+
npm install -g puppeteer@3.0.1
|
40
46
|
- name: Run specs
|
41
47
|
run: |
|
42
48
|
bundle exec rake
|
data/README.adoc
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
= isodoc: Processor to generate HTML/Word from Metanorma XML
|
2
2
|
|
3
3
|
image:https://img.shields.io/gem/v/isodoc.svg["Gem Version", link="https://rubygems.org/gems/isodoc"]
|
4
|
-
image:https://
|
5
|
-
image:https://
|
4
|
+
image:https://github.com/metanorma/isodoc/workflows/ubuntu/badge.svg["Ubuntu Build Status", link="https://github.com/metanorma/isodoc/actions?query=workflow%3Aubuntu"]
|
5
|
+
image:https://github.com/metanorma/isodoc/workflows/macos/badge.svg["OSX Build Status", link="https://github.com/metanorma/isodoc/actions?query=workflow%3Amacos"]
|
6
|
+
image:https://github.com/metanorma/isodoc/workflows/windows/badge.svg["Windows Build Status", link="https://github.com/metanorma/isodoc/actions?query=workflow%3Awindows"]
|
6
7
|
image:https://codeclimate.com/github/metanorma/isodoc/badges/gpa.svg["Code Climate", link="https://codeclimate.com/github/metanorma/isodoc"]
|
7
8
|
image:https://img.shields.io/github/issues-pr-raw/metanorma/isodoc.svg["Pull Requests", link="https://github.com/metanorma/isodoc/pulls"]
|
8
9
|
image:https://img.shields.io/github/commits-since/metanorma/isodoc/latest.svg["Commits since latest",link="https://github.com/metanorma/isodoc/releases"]
|
@@ -6,7 +6,9 @@ introduction: Introduction
|
|
6
6
|
foreword: Foreword
|
7
7
|
abstract: Abstract
|
8
8
|
termsdef: Terms and definitions
|
9
|
-
|
9
|
+
termsdefsymbolsabbrev: Terms, definitions, symbols and abbreviated terms
|
10
|
+
termsdefsymbols: Terms, definitions and symbols
|
11
|
+
termsdefabbrev: Terms, definitions and abbreviated terms
|
10
12
|
normref: Normative references
|
11
13
|
bibliography: Bibliography
|
12
14
|
clause: Clause
|
@@ -55,6 +57,21 @@ deprecated: DEPRECATED
|
|
55
57
|
source: SOURCE
|
56
58
|
and: and
|
57
59
|
all_parts: All Parts
|
60
|
+
month_january: January
|
61
|
+
month_february: February
|
62
|
+
month_march: March
|
63
|
+
month_april: April
|
64
|
+
month_may: May
|
65
|
+
month_june: June
|
66
|
+
month_july: July
|
67
|
+
month_august: August
|
68
|
+
month_september: September
|
69
|
+
month_october: October
|
70
|
+
month_november: November
|
71
|
+
month_december: December
|
72
|
+
obligation: Obligation
|
73
|
+
subject: Subject
|
74
|
+
inherits: Inherits
|
58
75
|
admonition: {
|
59
76
|
danger: Danger,
|
60
77
|
warning: Warning,
|
@@ -6,7 +6,9 @@ introduction: Introduction
|
|
6
6
|
foreword: Avant-propos
|
7
7
|
abstract: Résumé
|
8
8
|
termsdef: Terms et définitions
|
9
|
-
|
9
|
+
termsdefsymbolsabbrev: Terms, définitions, symboles et termes abrégés
|
10
|
+
termsdefsymbols: Terms, définitions et symboles
|
11
|
+
termsdefabbrev: Terms, définitions et termes abrégés
|
10
12
|
normref: Références normatives
|
11
13
|
bibliography: Bibliographie
|
12
14
|
clause: Article
|
@@ -48,6 +50,21 @@ deprecated: DÉCONSEILLÉ
|
|
48
50
|
source: SOURCE
|
49
51
|
and: et
|
50
52
|
all_parts: toutes les parties
|
53
|
+
month_january: Janvier
|
54
|
+
month_february: Février
|
55
|
+
month_march: Mars
|
56
|
+
month_april: Avril
|
57
|
+
month_may: Mai
|
58
|
+
month_june: Juin
|
59
|
+
month_july: Juillet
|
60
|
+
month_august: Août
|
61
|
+
month_september: Septembre
|
62
|
+
month_october: Octobre
|
63
|
+
month_november: Novembre
|
64
|
+
month_december: Décembre
|
65
|
+
obligation: Obligation
|
66
|
+
subject: Sujet
|
67
|
+
inherits: Hérite
|
51
68
|
admonition: {
|
52
69
|
danger: Danger,
|
53
70
|
warning: Avertissement,
|
@@ -6,7 +6,9 @@ introduction: 引言
|
|
6
6
|
foreword: 前言
|
7
7
|
abstract: 摘要
|
8
8
|
termsdef: 术语和定义
|
9
|
-
|
9
|
+
termsdefsymbolsabbrev: 术语、定义、符号、代号和缩略语
|
10
|
+
termsdefsymbols: 术语、定义、符号和代号
|
11
|
+
termsdefabbrev: 术语、定义、符号和缩略语
|
10
12
|
normref: 规范性引用文件
|
11
13
|
bibliography: 参考文献
|
12
14
|
clause: 条
|
@@ -50,6 +52,21 @@ deprecated: 被取代
|
|
50
52
|
source: 定义
|
51
53
|
and: 和
|
52
54
|
all_parts: 所有部分
|
55
|
+
month_january: 一月
|
56
|
+
month_february: 二月
|
57
|
+
month_march: 三月
|
58
|
+
month_april: 四月
|
59
|
+
month_may: 五月
|
60
|
+
month_june: 六月
|
61
|
+
month_july: 七月
|
62
|
+
month_august: 八月
|
63
|
+
month_september: 九月
|
64
|
+
month_october: 十月
|
65
|
+
month_november: 十一月
|
66
|
+
month_december: 十二月
|
67
|
+
obligation: 义务
|
68
|
+
subject: 主体
|
69
|
+
inherits: 继承自
|
53
70
|
admonition: {
|
54
71
|
danger: 危险,
|
55
72
|
warning: 警告,
|
@@ -7,7 +7,10 @@
|
|
7
7
|
}
|
8
8
|
|
9
9
|
font-weight: $fontWeight;
|
10
|
-
|
10
|
+
|
11
|
+
@if $length {
|
12
|
+
height: $length;
|
13
|
+
}
|
11
14
|
|
12
15
|
color: $color;
|
13
16
|
text-transform: uppercase;
|
@@ -28,9 +31,9 @@
|
|
28
31
|
|
29
32
|
@mixin docBand(
|
30
33
|
$order,
|
31
|
-
$textLength,
|
34
|
+
$textLength: null,
|
32
35
|
$offset: 0,
|
33
|
-
|
36
|
+
$color: white,
|
34
37
|
$fontWeight: 400,
|
35
38
|
$fontFamily: null) {
|
36
39
|
|
data/lib/isodoc/convert.rb
CHANGED
@@ -48,6 +48,7 @@ module IsoDoc
|
|
48
48
|
@olstyle = options[:olstyle]
|
49
49
|
@datauriimage = options[:datauriimage]
|
50
50
|
@suppressheadingnumbers = options[:suppressheadingnumbers]
|
51
|
+
@break_up_urls_in_tables = options[:break_up_urls_in_tables] == "true"
|
51
52
|
@termdomain = ""
|
52
53
|
@termexample = false
|
53
54
|
@note = false
|
@@ -222,5 +222,10 @@ module IsoDoc::Function
|
|
222
222
|
quote_attribution(node, out)
|
223
223
|
end
|
224
224
|
end
|
225
|
+
|
226
|
+
def passthrough_parse(node, out)
|
227
|
+
return if node["format"] and !(node["format"].split(/,/).include? @format.to_s)
|
228
|
+
out.passthrough node.text
|
229
|
+
end
|
225
230
|
end
|
226
231
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module IsoDoc::Function
|
2
2
|
module Cleanup
|
3
3
|
def textcleanup(docxml)
|
4
|
+
docxml = passthrough_cleanup(docxml)
|
4
5
|
docxml.
|
5
6
|
gsub(/\[TERMREF\]\s*/, l10n("[#{@source_lbl}: ")).
|
6
7
|
gsub(/\s*\[MODIFICATION\]\s*\[\/TERMREF\]/, l10n(", #{@modified_lbl} [/TERMREF]")).
|
@@ -8,6 +9,13 @@ module IsoDoc::Function
|
|
8
9
|
gsub(/\s*\[MODIFICATION\]/, l10n(", #{@modified_lbl} — "))
|
9
10
|
end
|
10
11
|
|
12
|
+
def passthrough_cleanup(docxml)
|
13
|
+
docxml = docxml.split(%r{(<passthrough>|</passthrough>)}).each_slice(4).map do |a|
|
14
|
+
a.size > 2 and a[2] = HTMLEntities.new.decode(a[2])
|
15
|
+
[a[0], a[2]]
|
16
|
+
end.join
|
17
|
+
end
|
18
|
+
|
11
19
|
def cleanup(docxml)
|
12
20
|
comment_cleanup(docxml)
|
13
21
|
footnote_cleanup(docxml)
|
@@ -20,15 +28,18 @@ module IsoDoc::Function
|
|
20
28
|
end
|
21
29
|
|
22
30
|
def table_long_strings_cleanup(docxml)
|
31
|
+
return unless @break_up_urls_in_tables == true
|
23
32
|
docxml.xpath("//td | //th").each do |d|
|
24
33
|
d.traverse do |n|
|
25
34
|
next unless n.text?
|
26
|
-
n.replace(
|
35
|
+
n.replace(HTMLEntities.new.encode(
|
36
|
+
break_up_long_strings(n.text)))
|
27
37
|
end
|
28
38
|
end
|
29
39
|
end
|
30
40
|
|
31
41
|
def break_up_long_strings(t)
|
42
|
+
return t if t.match(/^\s*$/)
|
32
43
|
t.split(/(?=\s)/).map do |w|
|
33
44
|
(/^\s*$/.match(t) or w.size < 30) ? w :
|
34
45
|
w.scan(/.{,30}/).map do |w1|
|
data/lib/isodoc/function/i18n.rb
CHANGED
@@ -77,8 +77,8 @@ module IsoDoc::Function
|
|
77
77
|
end
|
78
78
|
|
79
79
|
# TODO: move to localization file
|
80
|
-
def eref_localities1_zh(target, type, from, to)
|
81
|
-
ret = "
|
80
|
+
def eref_localities1_zh(target, type, from, to, delim)
|
81
|
+
ret = "#{delim} 第#{from.text}" if from
|
82
82
|
ret += "–#{to}" if to
|
83
83
|
loc = (@locality[type] || type.sub(/^locality:/, "").capitalize )
|
84
84
|
ret += " #{loc}"
|
@@ -86,9 +86,9 @@ module IsoDoc::Function
|
|
86
86
|
end
|
87
87
|
|
88
88
|
# TODO: move to localization file
|
89
|
-
def eref_localities1(target, type, from, to, lang = "en")
|
90
|
-
return l10n(eref_localities1_zh(target, type, from, to)) if lang == "zh"
|
91
|
-
ret =
|
89
|
+
def eref_localities1(target, type, from, to, delim, lang = "en")
|
90
|
+
return l10n(eref_localities1_zh(target, type, from, to, delim)) if lang == "zh"
|
91
|
+
ret = delim
|
92
92
|
loc = @locality[type] || type.sub(/^locality:/, "").capitalize
|
93
93
|
ret += " #{loc}"
|
94
94
|
ret += " #{from.text}" if from
|
@@ -55,12 +55,12 @@ module IsoDoc::Function
|
|
55
55
|
end
|
56
56
|
|
57
57
|
def get_linkend(node)
|
58
|
-
|
59
|
-
link += eref_localities(node.xpath(ns("./locality")), link)
|
60
|
-
contents = node.children.select { |c| c.name != "locality" }.
|
58
|
+
contents = node.children.select { |c| !%w{locality localityStack}.include? c.name }.
|
61
59
|
select { |c| !c.text? || /\S/.match(c) }
|
62
|
-
|
63
|
-
|
60
|
+
!contents.empty? and
|
61
|
+
return Nokogiri::XML::NodeSet.new(node.document, contents).to_xml
|
62
|
+
link = anchor_linkend(node, docid_l10n(node["target"] || node["citeas"]))
|
63
|
+
link + eref_localities(node.xpath(ns("./locality | ./localityStack")), link)
|
64
64
|
# so not <origin bibitemid="ISO7301" citeas="ISO 7301">
|
65
65
|
# <locality type="section"><reference>3.1</reference></locality></origin>
|
66
66
|
end
|
@@ -73,16 +73,29 @@ module IsoDoc::Function
|
|
73
73
|
|
74
74
|
def eref_localities(refs, target)
|
75
75
|
ret = ""
|
76
|
-
refs.
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
76
|
+
refs.each_with_index do |r, i|
|
77
|
+
delim = ","
|
78
|
+
delim = ";" if r.name == "localityStack" && i>0
|
79
|
+
if r.name == "localityStack"
|
80
|
+
r.elements.each_with_index do |rr, j|
|
81
|
+
ret += eref_localities0(rr, j, target, delim)
|
82
|
+
delim = ","
|
83
|
+
end
|
84
|
+
else
|
85
|
+
ret += eref_localities0(r, i, target, delim)
|
86
|
+
end
|
82
87
|
end
|
83
88
|
ret
|
84
89
|
end
|
85
90
|
|
91
|
+
def eref_localities0(r, i, target, delim)
|
92
|
+
if r["type"] == "whole" then l10n("#{delim} #{@whole_of_text}")
|
93
|
+
else
|
94
|
+
eref_localities1(target, r["type"], r.at(ns("./referenceFrom")),
|
95
|
+
r.at(ns("./referenceTo")), delim, @lang)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
86
99
|
def eref_parse(node, out)
|
87
100
|
linkend = get_linkend(node)
|
88
101
|
if node["type"] == "footnote"
|
@@ -94,12 +107,20 @@ module IsoDoc::Function
|
|
94
107
|
end
|
95
108
|
end
|
96
109
|
|
110
|
+
def origin_parse(node, out)
|
111
|
+
if t = node.at(ns("./termref"))
|
112
|
+
termrefelem_parse(t, out)
|
113
|
+
else
|
114
|
+
eref_parse(node, out)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
97
118
|
def termrefelem_parse(node, out)
|
98
119
|
out << "Termbase #{node['base']}, term ID #{node['target']}"
|
99
120
|
end
|
100
121
|
|
101
122
|
def concept_parse(node, out)
|
102
|
-
content = node.first_element_child.children.select { |c| c.name
|
123
|
+
content = node.first_element_child.children.select { |c| !%w{locality localityStack}.include? c.name }.
|
103
124
|
select { |c| !c.text? || /\S/.match(c) }
|
104
125
|
if content.empty?
|
105
126
|
out << "[Term defined in "
|
@@ -206,5 +227,19 @@ module IsoDoc::Function
|
|
206
227
|
p.b(**{ role: "strong" }) { |e| e << text }
|
207
228
|
end
|
208
229
|
end
|
230
|
+
|
231
|
+
def variant_parse(node, out)
|
232
|
+
if node["lang"] == @lang && node["script"] == @script
|
233
|
+
node.children.each { |n| parse(n, out) }
|
234
|
+
else
|
235
|
+
prev = node.xpath("./preceding-sibling::xmlns:variant")
|
236
|
+
foll = node.xpath("./following-sibling::xmlns:variant")
|
237
|
+
found = false
|
238
|
+
(prev + foll).each { |n| found = true if n["lang"] == @lang && n["script"] == @script }
|
239
|
+
return if found
|
240
|
+
return unless prev.empty?
|
241
|
+
node.children.each { |n| parse(n, out) }
|
242
|
+
end
|
243
|
+
end
|
209
244
|
end
|
210
245
|
end
|