natour 0.11.0 → 0.12.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: 6a5853cf54dee642dc7cf5e2fef40e7a3379266ead197977c4804146b8334ef0
4
- data.tar.gz: 13b08bc14434447bb5e6b18605f1c8a1fdadef8bba17e47154eec829095b3e13
3
+ metadata.gz: 1ac583bda8dbd5de8b922cc64bee346916b01c07b4ee986b845ef3c2c87985d0
4
+ data.tar.gz: 3e89dd11b0dda46ba30fdc62aec372068f5390209f7d119182d9340e4d5fbbfa
5
5
  SHA512:
6
- metadata.gz: f829da1ae7ae12e9f753274e8200c8d3de4e0d7e6c8cf13d5cdcb6c2c1abb4bf0ce5d8837e22ff32ed4589d2f30c7a4d5175831c24dfe8e642a8cf279be96fa6
7
- data.tar.gz: d144ee6947ada5321c828772db6364770dc8bea4616a3022e4c1f99bdc9a3df23e9f8bcd9c0e0dcf29fd74c945513539d19050d8780f0805e32e3ecd981ef69b
6
+ metadata.gz: 96b0e7a19722f0749d08fe5a51cc9b8491b1e0f04533aed2a07f0fc091ae27eb5df2f1e0c4dc1fd67ef21673840744b9aab27f28bd12376b7dfdd3c126d7b441
7
+ data.tar.gz: 55f7c5dbfa646ac25e715f3dc7a1b169fc72bc223bf49893f19bbd6d0cc3c5b773ad1bef64f3520ebe4290d1ec2ea7a28b1da745157de877cce9a485bcc55467
data/.natour.yml CHANGED
@@ -10,6 +10,7 @@
10
10
  :map: true
11
11
  :map_layers: []
12
12
  :adoc_author: null
13
+ :short_species_names: false
13
14
  :convert:
14
15
  :out_dir: null
15
16
  :out_file: null
data/CHANGELOG.adoc CHANGED
@@ -8,6 +8,21 @@ IMPORTANT: As per Semantic Versioning, the major version zero is for initial dev
8
8
 
9
9
  == Unreleased
10
10
 
11
+ == 0.12.0 - 2023-11-22
12
+
13
+ === Added
14
+
15
+ - Add command line option to use short species names in the AsciiDoc output. The species names are truncated by removing the authority (botany only).
16
+
17
+ === Changed
18
+
19
+ - Do not use shorthand syntax for the breakable option in the AsciiDoc output.
20
+
21
+ === Fixed
22
+
23
+ - Do not abort report creation if species lists are empty (assume default columns for the AsciiDoc output).
24
+ - Fix search of public transport stations if distance is missing (e.g. if the coordinates are outside of Switzerland).
25
+
11
26
  == 0.11.0 - 2023-04-15
12
27
 
13
28
  === Changed
@@ -33,7 +48,7 @@ IMPORTANT: As per Semantic Versioning, the major version zero is for initial dev
33
48
 
34
49
  === Changed
35
50
 
36
- - Omit empty columns of species lists in AsciiDoc output.
51
+ - Omit empty columns of species lists in the AsciiDoc output.
37
52
 
38
53
  === Fixed
39
54
 
data/README.adoc CHANGED
@@ -94,7 +94,35 @@ The configuration is built by loading https://yaml.org/[YAML^] files in hierarch
94
94
 
95
95
  [source,yml]
96
96
  ----
97
- include::.natour.yml[]
97
+ ---
98
+ :report:
99
+ :create:
100
+ :out_dir: null
101
+ :out_file: null
102
+ :overwrite: false
103
+ :track_formats:
104
+ - :gpx
105
+ - :fit
106
+ :map: true
107
+ :map_layers: []
108
+ :adoc_author: null
109
+ :short_species_names: false
110
+ :convert:
111
+ :out_dir: null
112
+ :out_file: null
113
+ :overwrite: false
114
+ :backend: :pdf
115
+ :draft: false
116
+ :draft_backend: null
117
+ :image_maxdim: 1800
118
+ :map:
119
+ :create:
120
+ :out_dir: null
121
+ :out_file: null
122
+ :overwrite: false
123
+ :gps_colors: []
124
+ :map_layers: []
125
+ :image_size: [1200, 900]
98
126
  ----
99
127
 
100
128
  How to restrict GPS tracks to the FIT format (see https://developer.garmin.com/fit/[FIT SDK^]) and add additional map layers (see https://api3.geo.admin.ch/api/faq/index.html#which-layers-are-available[API FAQ - GeoAdmin API 3.0 documentation^]) is shown in the example below.
data/bin/natour CHANGED
@@ -21,6 +21,7 @@ class NatourCmd < Clamp::Command
21
21
  option(%W[--\[no-\]map], :flag, 'Create map images')
22
22
  option(%w[--map-layers], 'LAYERS', 'Add additional layers to map images') { |s| s.split(',') }
23
23
  option(%w[--adoc-author], 'AUTHOR', 'AsciiDoc author (name <email>[; name2 <email2>...])')
24
+ option(%W[--\[no-\]short-species-names], :flag, 'Use short species names (botany only)')
24
25
  parameter('PATH', 'Path to directory')
25
26
 
26
27
  def execute
@@ -33,7 +34,9 @@ class NatourCmd < Clamp::Command
33
34
  track_formats: track_formats || config[:track_formats],
34
35
  create_map: Natour::BooleanUtils.to_boolean(map?, default_value: config[:map]),
35
36
  map_layers: map_layers || config[:map_layers],
36
- adoc_author: adoc_author || config[:adoc_author]
37
+ adoc_author: adoc_author || config[:adoc_author],
38
+ short_species_names: Natour::BooleanUtils.to_boolean(short_species_names?,
39
+ default_value: config[:short_species_names])
37
40
  )
38
41
  rescue Errno::EEXIST, Errno::ENOENT, Errno::EACCES, Errno::EISDIR, Errno::EINVAL => e
39
42
  message, _, path = Natour::ErrnoUtils.split_message(e)
@@ -4,7 +4,7 @@ require 'pathname'
4
4
 
5
5
  module Natour
6
6
  module Asciinurse
7
- def save_adoc(filename, overwrite: false, author: nil)
7
+ def save_adoc(filename, overwrite: false, author: nil, short_species_names: false)
8
8
  dir = Pathname(filename).dirname
9
9
  FileUtils.mkdir_p(dir)
10
10
  mode = File::WRONLY | File::CREAT | File::TRUNC
@@ -14,12 +14,13 @@ module Natour
14
14
  doc_root: Pathname(path).realpath
15
15
  .relative_path_from(dir.realpath)
16
16
  .to_s.force_encoding('utf-8'),
17
- author: author
17
+ author: author,
18
+ short_species_names: short_species_names
18
19
  ))
19
20
  end
20
21
  end
21
22
 
22
- def to_adoc(doc_root: '.', author: nil)
23
+ def to_adoc(doc_root: '.', author: nil, short_species_names: false)
23
24
  distance = ->(gps_track) { "#{gps_track.distance / 1000} km" if gps_track&.distance }
24
25
  ascent = ->(gps_track) { "#{gps_track.ascent} m" if gps_track&.ascent }
25
26
  descent = ->(gps_track) { "#{gps_track.descent} m" if gps_track&.descent }
@@ -98,16 +99,19 @@ module Natour
98
99
  group: :plants,
99
100
  title: 'Pflanzenarten',
100
101
  columns: [
101
- OpenStruct.new(header: 'Wissenschaftlicher Name', accessor: :name),
102
- OpenStruct.new(header: 'Deutscher Name', accessor: :name_de)
102
+ OpenStruct.new(
103
+ header: 'Wissenschaftlicher Name',
104
+ accessor: ->(species) { short_species_names ? BotanicalNameUtils.parse(species.name) : species.name }
105
+ ),
106
+ OpenStruct.new(header: 'Deutscher Name', accessor: ->(species) { species.name_de })
103
107
  ]
104
108
  ),
105
109
  OpenStruct.new(
106
110
  group: :birds,
107
111
  title: 'Vogelarten',
108
112
  columns: [
109
- OpenStruct.new(header: 'Deutscher Name', accessor: :name_de),
110
- OpenStruct.new(header: 'Wissenschaftlicher Name', accessor: :name)
113
+ OpenStruct.new(header: 'Deutscher Name', accessor: ->(species) { species.name_de }),
114
+ OpenStruct.new(header: 'Wissenschaftlicher Name', accessor: ->(species) { species.name })
111
115
  ]
112
116
  )
113
117
  ].each do |info|
@@ -120,16 +124,16 @@ module Natour
120
124
  caption = '.Tabelle {counter:species_lists}'
121
125
  caption << ": #{species_list.description}" if species_list.description
122
126
  columns = info.columns.select do |column|
123
- species_list.any? { |species| !species.public_send(column.accessor).nil? }
127
+ species_list.count.zero? || species_list.any? { |species| !column.accessor.call(species).nil? }
124
128
  end
125
129
  cols = [1] + [5 * info.columns.size / columns.size] * columns.size
126
130
  doc << caption
127
- doc << "[%breakable,cols=\"#{cols.join(',')}\",options=header]"
131
+ doc << "[cols=\"#{cols.join(',')}\",options=\"header,breakable\"]"
128
132
  doc << '|==='
129
133
  doc << "|Nr.|#{columns.map(&:header).join('|')}"
130
134
  species_list.each do |species|
131
135
  doc <<
132
- "|{counter:species_list#{index}}|#{columns.map { |column| species.public_send(column.accessor) }
136
+ "|{counter:species_list#{index}}|#{columns.map { |column| column.accessor.call(species) }
133
137
  .join('|')}"
134
138
  end
135
139
  doc << '|==='
@@ -4,7 +4,8 @@ module Natour
4
4
  module_function
5
5
 
6
6
  def create_reports(dir, out_dir: nil, out_file: nil, overwrite: false,
7
- track_formats: %i[gpx fit], create_map: true, map_layers: [], adoc_author: nil)
7
+ track_formats: %i[gpx fit], create_map: true, map_layers: [],
8
+ adoc_author: nil, short_species_names: false)
8
9
  out_dir = Pathname(out_dir || dir)
9
10
  out_file = Pathname(out_file || "#{Pathname(dir).realpath.basename}.adoc")
10
11
  reports = Report.load_directory(
@@ -16,7 +17,7 @@ module Natour
16
17
  else
17
18
  out_dir.join("#{out_file.basename('.*')} (#{index})#{out_file.extname}")
18
19
  end
19
- report.save_adoc(filename, overwrite: overwrite, author: adoc_author)
20
+ report.save_adoc(filename, overwrite: overwrite, author: adoc_author, short_species_names: short_species_names)
20
21
  filename.to_s
21
22
  end
22
23
  end
@@ -16,7 +16,7 @@ module Natour
16
16
  return unless response.is_a?(Net::HTTPSuccess)
17
17
 
18
18
  stations = JSON.parse(response.body, symbolize_names: true)
19
- stations.reject! { |station| station[:dist] > radius }
19
+ stations.reject! { |station| !station.key?(:dist) || station[:dist] > radius }
20
20
  station_types = %w[
21
21
  sl-icon-type-train
22
22
  sl-icon-type-strain
@@ -65,7 +65,7 @@ module Natour
65
65
  chunks.map do |rows|
66
66
  name, description = rows.shift
67
67
  date = DateUtils.parse(name, Pathname(filename).basename).compact.first
68
- items = rows.map { |row| Species.new(BotanicalNameUtils.parse(row[1]), row[2]) }
68
+ items = rows.map { |row| Species.new(row[1], row[2]) }
69
69
  .sort_by(&:name).uniq
70
70
  SpeciesList.new(
71
71
  filename,
@@ -82,7 +82,7 @@ module Natour
82
82
  CSV.open(filename, 'r:bom|utf-16le:utf-8', col_sep: "\t", headers: true) do |csv|
83
83
  date = DateUtils.parse(Pathname(filename).basename).compact.first
84
84
  items = csv.select { |row| row[0] }
85
- .map { |row| Species.new(BotanicalNameUtils.parse(row[11]), nil) }
85
+ .map { |row| Species.new(row[11], nil) }
86
86
  .sort_by(&:name).uniq
87
87
  [SpeciesList.new(filename, date, :info_flora, :plants, nil, nil, items)]
88
88
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Natour
4
- VERSION = '0.11.0'
4
+ VERSION = '0.12.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: natour
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Gysi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-15 00:00:00.000000000 Z
11
+ date: 2023-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciidoctor