hitomalu_formatter 0.1.0 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f3e95abbecfbc81d825e27b8e524fa921c3a12a436b0eac095585eaf0dd97d6c
4
- data.tar.gz: c95385f93c2cf3e45d57d6c0cd568d1702a1f3092507245817b39894bbe1e39e
3
+ metadata.gz: '04239c9c7d366f97db31ee7a67a15936ad16fe3900d0816b32409b9b6d944dec'
4
+ data.tar.gz: 6a26df5123e66d197952a98c30e1179a2d2c9c5620d07d1c5916aaddda9afd50
5
5
  SHA512:
6
- metadata.gz: a0251928b56f472a33b1811e5311d1a322710ccdceb243aec84f1169887082290340b6b7be6f16701ae0395a49cebd42f976ae8211b46825a6acb8209a4d7baa
7
- data.tar.gz: 1c264419e16ac70dba68deca621008363503dc23a2db64fef9d6d84ad3f2cec9508eb6c3e8268b5cabcd1ae9a466da8fb9fb8267bb25bfaf303f82ec4a71cf53
6
+ metadata.gz: b2999cc3946c94771090f582c649359fac349209fe5aa953173767f9ab1235ec366c4b5dcb6c8d6432411527694970aae15663a749a8358c5f8e90d4a9a57e2b
7
+ data.tar.gz: bc946c6f1cea4481ca105cd42dc6cef6993baaa64d76e1b58e9a9644fb5f1a9effb1dbf40a527a11f5c9f386f427e5bde117523b57ce2006ec96dcd30be531d7
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## [Unreleased]
2
2
 
3
- ## [0.1.0] - 2022-07-21
3
+ ## [0.1.3] - 2022-08-04
4
+ ## [0.1.2] - 2022-08-03
5
+
6
+ - a little fix
7
+
8
+ ## [0.1.1] - 2022-07-30
4
9
 
5
10
  - Initial release
data/Gemfile.lock CHANGED
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hitomalu_formatter (0.1.0)
4
+ hitomalu_formatter (0.1.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  diff-lcs (1.5.0)
10
- nokogiri (1.13.7-x86_64-linux)
10
+ nokogiri (1.13.8-x86_64-linux)
11
11
  racc (~> 1.4)
12
12
  racc (1.6.0)
13
13
  rake (13.0.6)
@@ -6,7 +6,9 @@ module Hitomalu
6
6
 
7
7
  # cf. https://developer.mozilla.org/ja/docs/Web/HTML/Inline_elements
8
8
  # rp と rt は上に記載がないが、改行させたくないので追加
9
- INLINE_TAGS = [ 'a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'big', 'br', 'button', 'canvas', 'cite', 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'sub', 'sup', 'svg', 'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr' ]
9
+ # node.name 'comment' であるコメントノードもインライン扱い
10
+ INLINE_TAGS = [ 'a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'big', 'br', 'button', 'canvas', 'cite', 'code', 'comment', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'sub', 'sup', 'svg', 'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr' ]
11
+ INLINE_TAGS_REGEXP = INLINE_TAGS.join('|')
10
12
 
11
13
  def self.format(html)
12
14
  # 改行コード \n を \r\n に統一しておく
@@ -72,11 +74,11 @@ module Hitomalu
72
74
  body_str = body.to_s.gsub(/(\|mykaigyo\|)+/, "\r\n").gsub('|myspace|', ' ').gsub(/(<\/wbr>|\|mykaramojiretsu\||\A<body>(\n|\r\n)*|(\n|\r\n)*<\/body>\Z)/, "").gsub(/(?<!\r)\n/, "\r\n")
73
75
 
74
76
  # </span></div> のような閉じタグの間に改行が無かったら改行を入れる (Nokogiri の add_next_sibling は 20000回するとメモリを6GB以上使うので文字列処理でやる)
75
- # ただし、</ruby>の前には入れない(</rp>などの短いインライン要素が来るため)
77
+ # ただし、片方または両方がインライン要素の閉じタグだったら入れない
76
78
  prev_str = ""
77
79
  while body_str != prev_str do
78
80
  prev_str = body_str
79
- body_str = body_str.gsub(/(<\/[a-z]+>)(<\/(?!ruby))/, "\\1\r\n\\2")
81
+ body_str = body_str.gsub(/(<\/(?!(#{INLINE_TAGS_REGEXP}))[a-z]+>)(<\/(?!(#{INLINE_TAGS_REGEXP}))[a-z]+>)/, "\\1\r\n\\3")
80
82
  end
81
83
 
82
84
  # 開始タグの前に改行がなければ改行を入れる (add_prev_sibling は重いので文字列処理でやる) (文章の先頭からは消す)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HitomaluFormatter
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.3"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hitomalu_formatter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - t-hazawa
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-30 00:00:00.000000000 Z
11
+ date: 2022-08-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: []