isodoc 3.1.0 → 3.1.1

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: 3a3a3be88ed08f8f5025c255a596b63685e4361411265eb024d0e9473f94fcca
4
- data.tar.gz: 0e821ce48e0d212e638ee5fe70298ea7ea47780d057255d67e708cecd02f3319
3
+ metadata.gz: 60e7a916df30b4032fbe9f1b2dcc6cec2563759b21525f9a7aa932f1f0dd2a24
4
+ data.tar.gz: 4f4add705922211d501cafbd282df7402cb5228baae6300f62dd1868a42aac2f
5
5
  SHA512:
6
- metadata.gz: ab31e514116f9dc989eae235a933062dfdd05418076b2d353e21d51d4a1767a4038e66946aa09d4a8e6616b8b0750bca340f92570b02d3320a63f14b8cc3c701
7
- data.tar.gz: 7373511670a6a8314374ab368bce30e23fcc5c0088adb53ae43fe85b70b87198347a141fd91127a200dcad2baa01492af476507e561c25785cb232a680876068
6
+ metadata.gz: 7f4074992a9e19be5425fbf4dcc169ea31f57754261da482b33b5dde2ee14f210f0b4ca3419676268d3fccc9d0aa978e8fe06806d2b3754da6d13116e7332b1b
7
+ data.tar.gz: 2b6e8718338825d52344fbda655c4fee4d3593dc46a65879a7b178a111923aeefb78c96f201de2a9b8d982a50f0fe4e83453902312aa7d8150d968d0b0bea6ee
data/isodoc.gemspec CHANGED
@@ -52,7 +52,8 @@ Gem::Specification.new do |spec|
52
52
  spec.add_development_dependency "guard-rspec", "~> 4.7"
53
53
  spec.add_development_dependency "rake", "~> 13.0"
54
54
  spec.add_development_dependency "rspec", "~> 3.6"
55
- spec.add_development_dependency "rubocop", "~> 1.5.2"
55
+ spec.add_development_dependency "rubocop", "~> 1"
56
+ spec.add_development_dependency "rubocop-performance"
56
57
  =begin
57
58
  if RUBY_VERSION.start_with?("3.1")
58
59
  spec.add_development_dependency "sassc-embedded", "1.54.0"
data/lib/isodoc/css.rb CHANGED
@@ -75,6 +75,25 @@ module IsoDoc
75
75
  end
76
76
 
77
77
  def convert_scss(filename, stylesheet, stripwordcss)
78
+ load_scss_paths(filename)
79
+ Dir.mktmpdir do |dir|
80
+ variables_file_path = File.join(dir, "variables.scss")
81
+ File.write(variables_file_path, scss_fontheader(stripwordcss))
82
+ SassC.load_paths << dir
83
+ modified_stylesheet = %( @use "variables" as *;\n#{stylesheet})
84
+ compile_scss(modified_stylesheet)
85
+ end
86
+ end
87
+
88
+ def compile_scss(modified_stylesheet)
89
+ SassC::Engine
90
+ .new(modified_stylesheet, quiet_deps: true, syntax: :scss,
91
+ silence_deprecations: %w(mixed-decls),
92
+ importer: SasscImporter)
93
+ .render.gsub(/__WORD__/, "")
94
+ end
95
+
96
+ def load_scss_paths(filename)
78
97
  require "sassc-embedded"
79
98
  require "isodoc/sassc_importer"
80
99
  [File.join(Gem.loaded_specs["isodoc"].full_gem_path,
@@ -82,23 +101,6 @@ module IsoDoc
82
101
  File.dirname(filename)].each do |name|
83
102
  SassC.load_paths << name
84
103
  end
85
-
86
- Dir.mktmpdir do |dir|
87
- variables_file_path = File.join(dir, "variables.scss")
88
- File.write(variables_file_path,
89
- scss_fontheader(stripwordcss))
90
-
91
- SassC.load_paths << dir
92
-
93
- # Modify the stylesheet to use the tempfile with @use
94
- modified_stylesheet = <<~SCSS
95
- @use "variables" as *;
96
- #{stylesheet}
97
- SCSS
98
- SassC::Engine.new(modified_stylesheet,
99
- syntax: :scss, importer: SasscImporter)
100
- .render
101
- end
102
104
  end
103
105
 
104
106
  # stripwordcss if HTML stylesheet, !stripwordcss if DOC stylesheet
@@ -106,17 +108,28 @@ module IsoDoc
106
108
  filename.nil? and return nil
107
109
  filename = precompiled_style_or_original(filename)
108
110
  stylesheet = File.read(filename, encoding: "UTF-8")
109
- stylesheet = populate_template(stylesheet, :word)
110
- stylesheet.gsub!(/(\s|\{)mso-[^:]+:[^;]+;/m, "\\1") if stripwordcss
111
- stylesheet.gsub!(/--/, "-DOUBLE_HYPHEN_ESCAPE-") unless stripwordcss
111
+ stylesheet = preprocess_css(stylesheet, stripwordcss)
112
112
  File.extname(filename) == ".scss" and
113
113
  stylesheet = convert_scss(filename, stylesheet, stripwordcss)
114
+ write_css(filename, stylesheet)
115
+ end
116
+
117
+ def write_css(filename, stylesheet)
114
118
  Tempfile.open([File.basename(filename, ".*"), "css"],
115
119
  mode: File::BINARY | File::SHARE_DELETE,
116
120
  encoding: "utf-8") do |f|
117
- f.write(stylesheet)
118
- f
119
- end
121
+ f.write(stylesheet)
122
+ f
123
+ end
124
+ end
125
+
126
+ def preprocess_css(stylesheet, html)
127
+ stylesheet = populate_template(stylesheet, :word)
128
+ html and stylesheet.gsub!(/(\s|\{)mso-[^:]+:[^;]+;/m, "\\1")
129
+ !html and stylesheet.gsub!(/--/, "-DOUBLE_HYPHEN_ESCAPE-")
130
+ !html and stylesheet.gsub!(%r<([a-z])\.([0-9])(?=[^{}]*{)>m,
131
+ "\\1.__WORD__\\2")
132
+ stylesheet
120
133
  end
121
134
  end
122
135
  end
@@ -111,30 +111,30 @@ module IsoDoc
111
111
  end
112
112
 
113
113
  def compile_scss(filename)
114
+ load_scss_paths(filename)
115
+ Dir.mktmpdir do |dir|
116
+ File.write(File.join(dir, "variables.scss"), fonts_placeholder)
117
+ SassC.load_paths << dir
118
+ sheet_content = File.read(filename, encoding: "UTF-8")
119
+ .gsub(%r<([a-z])\.([0-9])(?=[^{}]*{)>m, "\\1.__WORD__\\2")
120
+ SassC::Engine.new(%<@use "variables" as *;\n#{sheet_content}>,
121
+ syntax: :scss, importer: SasscImporter)
122
+ .render.gsub(/__WORD__/, "")
123
+ end
124
+ end
125
+
126
+ def load_scss_paths(filename)
114
127
  require "sassc-embedded"
115
128
  require "isodoc/sassc_importer"
116
-
117
129
  isodoc_path = if Gem.loaded_specs["isodoc"]
118
130
  File.join(Gem.loaded_specs["isodoc"].full_gem_path,
119
131
  "lib", "isodoc")
120
- else
121
- File.join("lib", "isodoc")
132
+ else File.join("lib", "isodoc")
122
133
  end
123
134
  [isodoc_path,
124
135
  File.dirname(filename)].each do |name|
125
- SassC.load_paths << name
126
- end
127
- Dir.mktmpdir do |dir|
128
- variables_file_path = File.join(dir, "variables.scss")
129
- File.write(variables_file_path, fonts_placeholder)
130
- SassC.load_paths << dir
131
-
132
- sheet_content = File.read(filename, encoding: "UTF-8")
133
- SassC::Engine.new(%<@use "variables" as *;\n#{sheet_content}>,
134
- syntax: :scss,
135
- importer: SasscImporter)
136
- .render
137
- end
136
+ SassC.load_paths << name
137
+ end
138
138
  end
139
139
 
140
140
  def compile_scss_task(current_task)
@@ -1,3 +1,3 @@
1
1
  module IsoDoc
2
- VERSION = "3.1.0".freeze
2
+ VERSION = "3.1.1".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isodoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
@@ -282,14 +282,28 @@ dependencies:
282
282
  requirements:
283
283
  - - "~>"
284
284
  - !ruby/object:Gem::Version
285
- version: 1.5.2
285
+ version: '1'
286
286
  type: :development
287
287
  prerelease: false
288
288
  version_requirements: !ruby/object:Gem::Requirement
289
289
  requirements:
290
290
  - - "~>"
291
291
  - !ruby/object:Gem::Version
292
- version: 1.5.2
292
+ version: '1'
293
+ - !ruby/object:Gem::Dependency
294
+ name: rubocop-performance
295
+ requirement: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ version: '0'
300
+ type: :development
301
+ prerelease: false
302
+ version_requirements: !ruby/object:Gem::Requirement
303
+ requirements:
304
+ - - ">="
305
+ - !ruby/object:Gem::Version
306
+ version: '0'
293
307
  - !ruby/object:Gem::Dependency
294
308
  name: sassc-embedded
295
309
  requirement: !ruby/object:Gem::Requirement
@@ -502,7 +516,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
502
516
  - !ruby/object:Gem::Version
503
517
  version: '0'
504
518
  requirements: []
505
- rubygems_version: 3.3.27
519
+ rubygems_version: 3.5.22
506
520
  signing_key:
507
521
  specification_version: 4
508
522
  summary: Convert documents in IsoDoc into Word and HTML in AsciiDoc.