seznam_slovnik 0.2.0 → 0.3.0

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: cd65335d31d9af4043e8012db508137335237efac59a352a43a875ef80d2e2b3
4
- data.tar.gz: 7f2e8c3b370c523f136c078a02e30240e5841ffb74816b99344cddc2914e6533
3
+ metadata.gz: ec8ffdf5a7d87aeef0258e35d5a4585c004ee17d92f751416ba2fdf730b47bfd
4
+ data.tar.gz: 814d94edeaaf9b1297896a7333c98be888de54741a5fc8fb9e7278f59e8ada83
5
5
  SHA512:
6
- metadata.gz: 5b4b78c408c7ad232ae3287b4dfe58483f34fa895e7b5d595f237c252176131632c5aa8372d4375b2986c2c365712607d6df2a491ad743556c6dd63a1f6880ee
7
- data.tar.gz: c137dd7f76b76b83a2c098f5500300c7a8f394bac207c0c7578f4c123eaa98caf864daa98146e489e2055d07db5cb3a129abe46deb503f095f3e10566e58acca
6
+ metadata.gz: 6bc16b54c4d7203ae864b55f20d409c5075daabe832f8cf1ec400f51f98597449972941ad323d3283d07c3f44f0e4c3f119ea37e9c144e3646b3582a2388177e
7
+ data.tar.gz: 88e230d60c48498fe1b2a1c0017fbd821a889bec559604badd386aa2eff0ce7b4a7679f6ccf204813dfa8c7eeb38df4e77b6d17be1e13a0f5577445c74758077
@@ -1 +1 @@
1
- ruby-2.5.3
1
+ ruby-2.6.5
@@ -39,11 +39,10 @@ module SeznamSlovnik
39
39
 
40
40
  doc = Nokogiri::HTML(html)
41
41
 
42
- title = doc.css('#results h1').text
43
- quick_definitions = doc
44
- .css('#results #fastMeanings table tr td:last-child')
45
- .map(&method(:clean_quick_meaning))
46
- .reject(&:empty?)
42
+ title = doc.css('h1').text
43
+ parts = doc
44
+ .css('.TranslatePage-results .Box--partOfSpeech')
45
+ .map(&method(:build_part_of_speech))
47
46
 
48
47
  _, columns = IO.console.winsize
49
48
  out = <<~OUT
@@ -51,12 +50,26 @@ module SeznamSlovnik
51
50
  Results for: #{title.colorize(color: :light_blue, mode: :bold)}
52
51
  #{"=" * (title.length + 13)}
53
52
 
54
- Quick Definitions
55
- #{"=" * 17}
53
+ Definitions
54
+ ===========
55
+
56
56
  OUT
57
57
 
58
- quick_definitions.each do |definition|
59
- out << " * #{definition}\n"
58
+ parts.each do |part|
59
+ out << part[:name]
60
+ out << "\n"
61
+ out << "-" * part[:name].length
62
+ out << "\n"
63
+ part[:definitions].each_with_index do |definition, i|
64
+ out << " #{i + 1})"
65
+ needs_padding = false
66
+ definition[:lines].each do |line|
67
+ out << " " * part[:definition_pad] if needs_padding
68
+ out << " * #{line}\n"
69
+ needs_padding = true
70
+ end
71
+ end
72
+ out << "\n"
60
73
  end
61
74
  out << "\n"
62
75
  out << "-" * columns.to_i
@@ -64,17 +77,25 @@ module SeznamSlovnik
64
77
  puts(color ? out : out.uncolorize)
65
78
  end
66
79
 
67
- private def clean_quick_meaning(meaning)
68
- meaning
69
- .children
70
- .map { |node| node.name == 'br' ? ', ' : node.text }
71
- .join
72
- .strip
73
- .gsub(/\s+/, " ")
74
- .gsub(/\s,/, ",")
75
- .split(ABBREVIATION)
76
- .map { |part| part.match?(ABBREVIATION) ? part.colorize(mode: :italic) : part.colorize(color: :light_blue, mode: :bold) }
77
- .join
80
+ private def build_part_of_speech(part)
81
+ pos = {}
82
+ pos[:name] = part.at_css('.Box-header-title').text
83
+ pos[:definitions] = part.css('li').map(&method(:build_definition))
84
+ pos[:definition_pad] = pos[:definitions].length.to_s.length + 2 # " 1)"
85
+ pos
86
+ end
87
+
88
+ private def build_definition(definition)
89
+ df = {}
90
+ df[:lines] = definition.css('.Box-content-line').map(&method(:clean_line))
91
+ df
92
+ end
93
+
94
+ private def clean_line(line)
95
+ line.children.map do |part|
96
+ next '->' if part['class'].to_s == "Box-content-pointer"
97
+ part.text
98
+ end.map(&:strip).reject(&:empty?).join(' ')
78
99
  end
79
100
  end
80
101
 
@@ -1,3 +1,3 @@
1
1
  module SeznamSlovnik
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seznam_slovnik
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - jphager2
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-02-27 00:00:00.000000000 Z
11
+ date: 2019-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -139,8 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
139
  - !ruby/object:Gem::Version
140
140
  version: '0'
141
141
  requirements: []
142
- rubyforge_project:
143
- rubygems_version: 2.7.7
142
+ rubygems_version: 3.0.6
144
143
  signing_key:
145
144
  specification_version: 4
146
145
  summary: CLI for Seznam's Slovnik