mdv 0.4.1 → 0.7.0

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: a9ea415d5cb925df17d9d4d5b08159c216db759c5649acf495d1193c735f8b3a
4
- data.tar.gz: 9102fc4355708e379ba96f00e4630ddcc653d2d32baaf7ee89b01479f8ead804
3
+ metadata.gz: 157742d804cd8625c8c157dba743e9ccaf5e3c22035c44ade34b4cc5f078ab5b
4
+ data.tar.gz: dc93ca82813f53fff68b46f659c2338250e5703eca326a777da2732c23372b61
5
5
  SHA512:
6
- metadata.gz: cd6419ac5e176c461df1284208f147a61bb289a28927aa6342ba2ee3a1bf5df984695a306d22476ad1ae4cd3fa4f3944831451be6814e4641dba01a7c29fc907
7
- data.tar.gz: 8b12ad0377ddebd0fffe0c2bd82991ef981e27ced5b5d5be5dbd927dd8ba6cac89fe1a1ef88cd06878341e8b125d408c3b9d5d48338a8ba4e99fcad04b0fb390
6
+ metadata.gz: 88e22ead99dc73e67273d52a6be5b134d36472dfee546bf1812465faf0c56045a9d5af1f4aecd084dcb969a632d70e0baf24e1391a34a5548b9cd0c3cd1a96b1
7
+ data.tar.gz: 6dcf7e0c5f1b9ddb3a7e61eaed787dd7b5932c84187648c9124cbcd84eb5b224935932e2e39a993e5a79c095d756518c587159183ba06040e60d1c0e373ea853
data/Changelog.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Change log
2
2
 
3
+ ## 0.7.0 / 2022-02-11
4
+
5
+ * Drop support for Ruby 2.5
6
+ * Support Ruby 3.1
7
+ * Update dependencies to allow github-markup version 4.0
8
+
9
+ ## 0.6.0 / 2021-01-17
10
+
11
+ * Drop support for Ruby 2.4
12
+ * Support Ruby 2.7 and 3.0
13
+ * Implement as a Gtk::Application
14
+
15
+ ## 0.5.1 / 2019-11-03
16
+
17
+ * Fix navigation signal handler that would cause program to abort just after
18
+ loading
19
+
20
+ ## 0.5.0 / 2019-10-20
21
+
22
+ * Drop support for Ruby 2.3 and lower
23
+ * Port to GirFFI-Gtk
24
+
3
25
  ## 0.4.1 / 2018-12-09
4
26
 
5
27
  * Update dependencies
data/README.md CHANGED
@@ -15,7 +15,15 @@ links open in default browser.
15
15
 
16
16
  ## Dependencies
17
17
 
18
- MDV depends on the wekit2-gtk gem.
18
+ MDV depends on the `gir_ffi-gtk` gem. Additionally, you need to install the
19
+ Webkit2Gtk library and its gobject-introspection information. On Debian and
20
+ Ubuntu, the following should work:
21
+
22
+ sudo apt-get install gir1.2-webkit2-4.0
23
+
24
+ On Ubuntu, you may also have to install two additional packages:
25
+
26
+ sudo apt-get install libwebkit2gtk-4.0-dev libjavascriptcoregtk-4.0-dev
19
27
 
20
28
  ## Contributing
21
29
 
@@ -24,5 +32,5 @@ on GitHub.
24
32
 
25
33
  ## License
26
34
 
27
- Copyright © 2012–2018 [Matijs van Zuijlen](http://www.matijs.net).
35
+ Copyright © 2012–2019 [Matijs van Zuijlen](http://www.matijs.net).
28
36
  See LICENSE for details.
data/bin/mdv CHANGED
@@ -1,15 +1,58 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'mdv'
4
+ require "mdv"
5
5
 
6
- Gtk.init
6
+ myapp = Gtk::Application.new("net.matijs.mdv", handles_open: true)
7
7
 
8
- WebKit2Gtk::WebContext.default.set_cache_model :document_viewer
8
+ def make_window(app)
9
+ win = Gtk::ApplicationWindow.new app
10
+ close_action = Gio::SimpleAction.new("close", nil)
11
+ close_action.signal_connect("activate") { win.destroy }
12
+ win.add_action close_action
13
+ win
14
+ end
9
15
 
10
- file = ARGV[0]
11
- raise 'Need file' unless file
16
+ myapp.signal_connect "startup" do |app|
17
+ WebKit2::WebContext.get_default.set_cache_model :document_viewer
12
18
 
13
- MDV::MarkdownViewer.new file
19
+ action = Gio::SimpleAction.new("quit", nil)
20
+ action.signal_connect("activate") { app.quit }
21
+ myapp.add_action action
14
22
 
15
- Gtk.main
23
+ myapp.set_accels_for_action "app.quit", ["<Ctrl>Q"]
24
+ myapp.set_accels_for_action "win.close", ["<Ctrl>W"]
25
+ myapp.set_accels_for_action "win.reload", ["<Ctrl>R"]
26
+
27
+ # Add menu so Atspi has a way to access the actions
28
+ menu = Gio::Menu.new
29
+ file_menu = Gio::Menu.new
30
+ file_menu.append "Close Window", "win.close"
31
+ file_menu.append "Quit", "app.quit"
32
+ menu.append_submenu "File", file_menu
33
+ view_menu = Gio::Menu.new
34
+ view_menu.append "Reload", "win.reload"
35
+ menu.append_submenu "View", view_menu
36
+
37
+ myapp.menubar = menu
38
+ end
39
+
40
+ myapp.signal_connect "activate" do |app, _user_data|
41
+ win = make_window(app)
42
+ win.show_all
43
+ win.children.first.visible = false
44
+ end
45
+
46
+ myapp.signal_connect "open" do |app, files, _hint, _user_data|
47
+ files.each do |file|
48
+ filename = file.path
49
+ win = make_window(app)
50
+ MDV::MarkdownViewer.new win, filename
51
+ win.show_all
52
+
53
+ # This hides the menubar but keeps it available for Atspi
54
+ win.children.first.visible = false
55
+ end
56
+ end
57
+
58
+ exit(myapp.run([$PROGRAM_NAME] + ARGV))
data/lib/mdv/document.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'github/markup'
3
+ require "github/markup"
4
4
 
5
5
  module MDV
6
6
  # Markdown document class
@@ -1,72 +1,57 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'webkit2-gtk'
4
- require 'mdv/document'
3
+ require "gir_ffi-gtk3"
4
+ require "mdv/document"
5
+
6
+ GirFFI.setup :WebKit2, "4.0"
5
7
 
6
8
  module MDV
7
9
  # Markdown viewer window class
8
10
  class MarkdownViewer
9
- def initialize(file)
11
+ def initialize(win, file)
12
+ @win = win
10
13
  @document = Document.new(file)
11
14
  setup_gui
15
+ connect_actions
12
16
  reload
13
17
  connect_signals
14
- @win.show_all
15
18
  end
16
19
 
17
20
  private
18
21
 
19
22
  def connect_signals
20
- connect_key_press_event_signal
21
- connect_destroy_signal
22
23
  connect_web_view_signals
23
24
  end
24
25
 
25
- def connect_destroy_signal
26
- @win.signal_connect('destroy') { Gtk.main_quit }
27
- end
28
-
29
- def connect_key_press_event_signal
30
- @win.signal_connect 'key-press-event' do |_wdg, evt, _ud|
31
- handle_key(evt) if evt.state.control_mask?
32
- false
33
- end
34
- end
35
-
36
26
  def connect_web_view_signals
37
- web_view.signal_connect('context-menu') { true }
38
- web_view.signal_connect('decide-policy') do |_wv, decision, decision_type|
27
+ web_view.signal_connect("context-menu") { true }
28
+ web_view.signal_connect("decide-policy") do |_wv, decision, decision_type|
39
29
  handle_decide_policy(decision, decision_type)
40
30
  end
41
31
  end
42
32
 
43
- def handle_key(evt)
44
- case evt.keyval
45
- when 'q'.ord
46
- @win.destroy
47
- when 'r'.ord
48
- reload
49
- end
50
- end
51
-
52
33
  def handle_decide_policy(decision, decision_type)
53
- case decision_type.nick
54
- when 'navigation-action'
34
+ case decision_type
35
+ when :navigation_action
55
36
  action = decision.navigation_action
56
- if action.user_gesture?
37
+ if action.is_user_gesture
57
38
  Gtk.show_uri_on_window(@win, action.request.uri, 0)
58
39
  true
59
40
  end
60
- when 'new-window-action'
41
+ when :new_window_action
61
42
  true
62
43
  end
63
44
  end
64
45
 
65
46
  def setup_gui
66
- @win = Gtk::Window.new :toplevel
67
- @win.set_default_geometry 700, 500
68
-
69
47
  @win.add scrolled_window
48
+ @win.set_default_size 700, 500
49
+ end
50
+
51
+ def connect_actions
52
+ reload_action = Gio::SimpleAction.new("reload", nil)
53
+ reload_action.signal_connect("activate") { reload }
54
+ @win.add_action reload_action
70
55
  end
71
56
 
72
57
  def scrolled_window
@@ -76,7 +61,7 @@ module MDV
76
61
  end
77
62
 
78
63
  def web_view
79
- @web_view ||= WebKit2Gtk::WebView.new
64
+ @web_view ||= WebKit2::WebView.new
80
65
  end
81
66
 
82
67
  def reload
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MDV
4
+ VERSION = "0.7.0"
5
+ end
data/lib/mdv.rb CHANGED
@@ -1,3 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'mdv/markdown_viewer'
3
+ require_relative "mdv/markdown_viewer"
4
+ require_relative "mdv/version"
metadata CHANGED
@@ -1,144 +1,264 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mdv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matijs van Zuijlen
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-09 00:00:00.000000000 Z
11
+ date: 2022-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: github-markdown
14
+ name: gir_ffi
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.6.5
19
+ version: 0.15.7
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.6.5
26
+ version: 0.15.7
27
27
  - !ruby/object:Gem::Dependency
28
- name: github-markup
28
+ name: gir_ffi-gtk
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.0'
33
+ version: 0.15.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.0'
40
+ version: 0.15.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: webkit2-gtk
42
+ name: github-markdown
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 3.3.0
47
+ version: 0.6.5
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 3.3.0
54
+ version: 0.6.5
55
55
  - !ruby/object:Gem::Dependency
56
- name: gnome_app_driver
56
+ name: github-markup
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '3'
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: '5'
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '3'
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '5'
75
+ - !ruby/object:Gem::Dependency
76
+ name: atspi_app_driver
57
77
  requirement: !ruby/object:Gem::Requirement
58
78
  requirements:
59
79
  - - "~>"
60
80
  - !ruby/object:Gem::Version
61
- version: 0.2.1
81
+ version: 0.7.2
62
82
  type: :development
63
83
  prerelease: false
64
84
  version_requirements: !ruby/object:Gem::Requirement
65
85
  requirements:
66
86
  - - "~>"
67
87
  - !ruby/object:Gem::Version
68
- version: 0.2.1
88
+ version: 0.7.2
69
89
  - !ruby/object:Gem::Dependency
70
90
  name: minitest
71
91
  requirement: !ruby/object:Gem::Requirement
72
92
  requirements:
73
93
  - - "~>"
74
94
  - !ruby/object:Gem::Version
75
- version: '5.5'
95
+ version: '5.12'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '5.12'
103
+ - !ruby/object:Gem::Dependency
104
+ name: pry
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 0.14.0
76
110
  type: :development
77
111
  prerelease: false
78
112
  version_requirements: !ruby/object:Gem::Requirement
79
113
  requirements:
80
114
  - - "~>"
81
115
  - !ruby/object:Gem::Version
82
- version: '5.5'
116
+ version: 0.14.0
83
117
  - !ruby/object:Gem::Dependency
84
118
  name: rake
85
119
  requirement: !ruby/object:Gem::Requirement
86
120
  requirements:
87
121
  - - "~>"
88
122
  - !ruby/object:Gem::Version
89
- version: '12.0'
123
+ version: '13.0'
90
124
  type: :development
91
125
  prerelease: false
92
126
  version_requirements: !ruby/object:Gem::Requirement
93
127
  requirements:
94
128
  - - "~>"
95
129
  - !ruby/object:Gem::Version
96
- version: '12.0'
97
- description: Quickly view markdown files on GNOME
130
+ version: '13.0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: rake-manifest
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: 0.2.0
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: 0.2.0
145
+ - !ruby/object:Gem::Dependency
146
+ name: rubocop
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: 1.25.0
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: 1.25.0
159
+ - !ruby/object:Gem::Dependency
160
+ name: rubocop-minitest
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: 0.17.0
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: 0.17.0
173
+ - !ruby/object:Gem::Dependency
174
+ name: rubocop-packaging
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: 0.5.0
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: 0.5.0
187
+ - !ruby/object:Gem::Dependency
188
+ name: rubocop-performance
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: 1.13.0
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: 1.13.0
201
+ - !ruby/object:Gem::Dependency
202
+ name: simplecov
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: 0.21.0
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: 0.21.0
215
+ description: 'Quickly view markdown files on GNOME
216
+
217
+ '
98
218
  email:
99
219
  - matijs@matijs.net
100
220
  executables:
101
221
  - mdv
102
222
  extensions: []
103
- extra_rdoc_files: []
223
+ extra_rdoc_files:
224
+ - Changelog.md
225
+ - README.md
104
226
  files:
105
227
  - Changelog.md
106
- - Gemfile
107
228
  - LICENSE
108
229
  - README.md
109
- - Rakefile
110
230
  - bin/mdv
111
231
  - lib/mdv.rb
112
232
  - lib/mdv/document.rb
113
233
  - lib/mdv/markdown_viewer.rb
114
- - test/end_to_end/basic_run_test.rb
115
- - test/mdv/document_test.rb
116
- - test/test_helper.rb
234
+ - lib/mdv/version.rb
117
235
  homepage: http://www.github.com/mvz/mdv
118
236
  licenses:
119
237
  - MIT
120
- metadata: {}
121
- post_install_message:
122
- rdoc_options: []
238
+ metadata:
239
+ homepage_uri: http://www.github.com/mvz/mdv
240
+ source_code_uri: https://github.com/mvz/mdv
241
+ changelog_uri: https://github.com/mvz/mdv/blob/master/Changelog.md
242
+ rubygems_mfa_required: 'true'
243
+ post_install_message:
244
+ rdoc_options:
245
+ - "--main"
246
+ - README.md
123
247
  require_paths:
124
248
  - lib
125
249
  required_ruby_version: !ruby/object:Gem::Requirement
126
250
  requirements:
127
251
  - - ">="
128
252
  - !ruby/object:Gem::Version
129
- version: 2.3.0
253
+ version: 2.6.0
130
254
  required_rubygems_version: !ruby/object:Gem::Requirement
131
255
  requirements:
132
256
  - - ">="
133
257
  - !ruby/object:Gem::Version
134
258
  version: '0'
135
259
  requirements: []
136
- rubyforge_project:
137
- rubygems_version: 2.7.6
138
- signing_key:
260
+ rubygems_version: 3.3.3
261
+ signing_key:
139
262
  specification_version: 4
140
263
  summary: Simple Markdown Viewer
141
- test_files:
142
- - test/mdv/document_test.rb
143
- - test/test_helper.rb
144
- - test/end_to_end/basic_run_test.rb
264
+ test_files: []
data/Gemfile DELETED
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- gemspec
data/Rakefile DELETED
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rake/clean'
4
- require 'bundler/gem_tasks'
5
- require 'rake/testtask'
6
-
7
- namespace :test do
8
- Rake::TestTask.new(:unit) do |t|
9
- t.libs = ['lib']
10
- t.test_files = FileList['test/mdv/*_test.rb']
11
- t.warning = true
12
- end
13
-
14
- Rake::TestTask.new(:end_to_end) do |t|
15
- t.libs = ['lib']
16
- t.test_files = FileList['test/end_to_end/*_test.rb']
17
- t.warning = true
18
- end
19
-
20
- task all: [:unit, :end_to_end]
21
- end
22
-
23
- task test: 'test:all'
24
-
25
- task default: 'test'
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../test_helper'
4
- require 'gnome_app_driver'
5
-
6
- # Test driver for the MDV application.
7
- class MDVDriver < GnomeAppDriver
8
- def initialize
9
- super 'mdv'
10
- end
11
-
12
- def boot(filename)
13
- super arguments: [filename]
14
- end
15
- end
16
-
17
- describe 'The MDV application' do
18
- before do
19
- @driver = MDVDriver.new
20
- @driver.boot('README.md')
21
- end
22
-
23
- it 'starts and can be quit with Ctrl-q' do
24
- @driver.press_ctrl_q
25
-
26
- status = @driver.cleanup
27
- status.exitstatus.must_equal 0
28
- end
29
-
30
- after do
31
- @driver.cleanup
32
- end
33
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../test_helper'
4
-
5
- require 'mdv/document'
6
-
7
- describe MDV::Document do
8
- let(:document) { MDV::Document.new('test/fixtures/test.md') }
9
-
10
- describe '#html' do
11
- it 'renders the correct html' do
12
- document.html.
13
- must_equal "<h1>Test</h1>\n\n<p>This is a test document.</p>\n"
14
- end
15
- end
16
- end
data/test/test_helper.rb DELETED
@@ -1,3 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'minitest/autorun'