wikian 0.1.1 → 0.1.6

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: 91aba0c780899759805ebdd5d68297d87ecce58afaac94f99d2314883c760343
4
- data.tar.gz: 4b586d366edfcddc22db22a4e56255845e2da3545aee038a888b69db123f7dc4
3
+ metadata.gz: e066880739b70e35ea72420c4692f03b06edb3e166de62e4266c2fb0ed987361
4
+ data.tar.gz: 2844bbad116737e2325e917670bb2e91820ccc8f6d4304cf1f84e826832cc0b5
5
5
  SHA512:
6
- metadata.gz: 513a2b007c95ba82da1c701409a3cfe3323f406a97a13215db6edf4ea72693d1f11d43198a0f0c51dd7f82ff9d428f4b91cc21fed3dd46dcd63727a9936304ba
7
- data.tar.gz: 58d5b4a8873584183b7efe189f56a8f3f762ff0326989cc38610fdc793ad8bb89310b1567536362c039bd0e87f7dc653b614ffe6c5cbd3f807a4d59927a341b6
6
+ metadata.gz: '065693de9893b9741bd4b6cc3ee86c66ae7c7d9406acede75cedc78dba156351f0412ce187aed004325ebd7e9c0bdb1bada66ffabf9df158b304ec2f6d178c26'
7
+ data.tar.gz: 50feea8fa794dfe9b53acce2cbd161bd641a6407df241c5c69ebcacfe6a5930ed9be2e68f37911d82455d143526d4ae14ce3da577b374d36b09ab725f8b77dd4
data/.gitignore CHANGED
@@ -1,15 +1,6 @@
1
- # files without extensions except directories
2
- *
3
- !/**/
4
- !?*.*
5
-
6
1
  # directories
7
- .bundle/
8
- _yardoc/
9
- coverage/
10
2
  doc/
11
3
  pkg/
12
- spec/reports/
13
4
  tmp/
14
5
  vendor/
15
6
 
@@ -22,6 +13,7 @@ vendor/
22
13
  .*.swp
23
14
  .DS_Store
24
15
  .byebug
16
+ .byebugrc
25
17
  .idea
26
18
  .project
27
19
  .rake*
@@ -46,12 +38,3 @@ secrets.yml
46
38
  ![MR]akefile
47
39
  !bin/**/[^.]*
48
40
  !exe/**/[^.]*
49
-
50
- /.bundle/
51
- /.yardoc
52
- /_yardoc/
53
- /coverage/
54
- /doc/
55
- /pkg/
56
- /spec/reports/
57
- /tmp/
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- wikian (0.1.1)
4
+ wikian (0.1.6)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -1,28 +1,35 @@
1
1
  # Wikian
2
2
 
3
3
  Want to be happier while editing wiki files?
4
- Try [Wikian](https://rubygems.org/gems/wikian):
4
+ Me too, that's why I use [Wikian](https://rubygems.org/gems/wikian):
5
5
 
6
6
  ```
7
7
  $ gem install wikian
8
8
  ```
9
9
 
10
- To use it, first create a wikipedia account and get a user name and a password.
11
- Then define and export the `WIKI_USER` and `SECRET_WIKI_PASS` variables in your `.bashrc`:
10
+ To use it create a Wikipedia account, then define and export the `WIKI_USER` and `SECRET_WIKI_PASS` variables in your `.bashrc`:
12
11
 
13
12
  ```bash
14
- export WIKI_USER='Example_user'
15
- export SECRET_WIKI_PASS='example_password'
13
+ export WIKI_USER='Example_wiki_user_name'
14
+ export SECRET_WIKI_PASS='example_wiki_password'
16
15
  ```
17
16
 
18
- Wikian works across [Wikimedia sites](https://meta.wikimedia.org/wiki/Our_projects).
19
- Create a file following the convention:
17
+ Wikian works across [Wikimedia sites](https://meta.wikimedia.org/wiki/Our_projects) and follows the file naming convention:
20
18
 
21
19
  ```
22
20
  <article_name>.<site>.wiki
23
21
  ```
24
22
 
25
- ## Examples
23
+ Some valid file names:
24
+
25
+ ```
26
+ Spider_Man.en.wikipedia.org.wiki
27
+ Spider_Man.es.wikipedia.org.wiki
28
+ excelsior.es.wiktionary.org.wiki
29
+ User:Example_User.www.mediawiki.org.wiki
30
+ ```
31
+
32
+ #### Examples
26
33
 
27
34
  To append some text to your Wiktionary user profile:
28
35
 
@@ -36,27 +43,41 @@ $ wi post -p User:$WIKI_USER.en.wikitionary.org.wiki
36
43
  Article uploaded
37
44
  ```
38
45
 
39
- To edit an article first you need to get its wikitext.
40
- Generate a template `wiki.yml` config:
46
+ To get an article's wikitext:
41
47
 
42
- ```
43
- wi g -t
44
- ```
45
48
 
46
- Then get an article to edit
49
+ ```
50
+ $ wi get -t
51
+ Creating template wiki.yml
47
52
 
48
- ```bash
49
- $ wi get https://en.wikipedia.org/wiki/Wikipedia:Sandbox
53
+ $ wi g https://en.wikipedia.org/wiki/Wikipedia:Sandbox
50
54
  Writing to Wikipedia:Sandbox.en.wikipedia.org.json
51
55
  Writing to Wikipedia:Sandbox.en.wikipedia.org.wiki
52
56
  ```
53
57
 
54
- Edits the wiki file in Vim, \*ahem\*, in your favorite text editor.
55
- When ready, uploaded it:
58
+ Then edit the the article in your favorite text editor and upload it:
56
59
 
57
60
  ```bash
58
61
  $ wi post Wikipedia:Sandbox.en.wikipedia.org.wiki
59
62
  Article uploaded
60
63
  ```
61
64
 
62
- Vim users should try out [mediawiki.vim](https://en.wikipedia.org/wiki/Help:Text_editor_support#Vim), it's awesome.
65
+ To append wikitext to section 2:
66
+
67
+ ```bash
68
+ $ wi post -s 2 Wikipedia:Sandbox.en.wikipedia.org.wiki
69
+ Article uploaded
70
+ ```
71
+
72
+ To search for a pattern in wikipedia:
73
+
74
+ ```
75
+ $ wi search -t
76
+ Creating template wiki.yml
77
+
78
+ $ wi search
79
+ Article uploaded
80
+ ```
81
+
82
+ Vim users should try out [mediawiki.vim](https://en.wikipedia.org/wiki/Help:Text_editor_support#Vim) which defines syntax highlighting and abbreviations for wikitext files.
83
+
@@ -47,6 +47,8 @@ class Wikian
47
47
  def run
48
48
  if args.have?(%w(-h --help))
49
49
  help
50
+ elsif args.have?(%w(-v --version))
51
+ version
50
52
  end
51
53
 
52
54
  @subcommand = args.shift
@@ -81,6 +83,7 @@ class Wikian
81
83
  -m, --message MESSAGE add a commit message (HIGHLY recommended)
82
84
  -p, --prepend prepend the input file
83
85
  -r, --remove-cookie remove API cookie
86
+ -s, --section NUMBER section to edit
84
87
  -t, --template create template configuration file
85
88
  -v, --version
86
89
 
@@ -119,4 +122,9 @@ class Wikian
119
122
  eos
120
123
  exit
121
124
  end
125
+
126
+ def version
127
+ puts "wikian #{VERSION}"
128
+ exit
129
+ end
122
130
  end
@@ -2,6 +2,7 @@ class Wikian
2
2
  class WikianGetError < StandardError; end
3
3
  class ExtractWikiError < WikianGetError; end
4
4
  class ArgumentRequiredError < WikianGetError; end
5
+ class BadUrlError < WikianGetError; end
5
6
 
6
7
  class Get < Subcommand
7
8
  attr_accessor :title
@@ -13,6 +14,8 @@ class Wikian
13
14
 
14
15
  url = URI(args.find{|arg| arg =~ URI.regexp})
15
16
 
17
+ raise BadUrlError unless url.path
18
+
16
19
  @title = File.basename(url.path)
17
20
 
18
21
  @output_file = title + '.' + url.host
@@ -54,7 +57,6 @@ class Wikian
54
57
 
55
58
  # this is ugly, but Wikipedia is inconsistent in their JSON value for 'pages'. Sometimes it's a hash, sometimes it's an array.
56
59
  if pages.respond_to? :keys
57
- byebug
58
60
  create_wiki.call(pages.values.first['title'], pages.values.first['revisions'])
59
61
  else
60
62
  pages.each do |page|
@@ -65,7 +67,7 @@ class Wikian
65
67
  rescue => e
66
68
  puts "An error occurred while extracting the wikitext",
67
69
  "Try using a new config file by pasing the '-t' option.",
68
- "Or pass '-d' option for debugging"
70
+ "Or pass the '-d' option for debugging"
69
71
  exit
70
72
  end
71
73
 
@@ -81,9 +83,9 @@ class Wikian
81
83
  - revisions
82
84
  rvprop:
83
85
  - content
84
- #rvsection:
85
- # - 0
86
- # - 2
86
+ #rvsection: # get specific sections
87
+ # - 0
88
+ # - 2
87
89
  rvslots:
88
90
  - main
89
91
  formatversion:
@@ -107,12 +107,15 @@ class Wikian
107
107
  # pass the wikitext in request body
108
108
  @body_text = wikitext
109
109
  end
110
- if args.include?('-c')
110
+ if args.have?(%w(-c --captcha))
111
111
  params['captchaid'], params['captchaword'] = args[args.index('-c')+1].split(':')
112
112
  end
113
- if args.include?('-m')
113
+ if args.have?(%w(-m --message))
114
114
  params['summary'] = args[args.index('-m')+1]
115
115
  end
116
+ if args.have?(%w(-s --section))
117
+ params['section'] = args[args.index('-s')+1]
118
+ end
116
119
  @query = URI.encode_www_form(params)
117
120
  end
118
121
 
@@ -30,8 +30,8 @@ class Wikian
30
30
  - query
31
31
  list:
32
32
  - search
33
- srsearch:
34
- - Craig Noone
33
+ srsearch: # text to search for. You can use multiple
34
+ - Mr. Fixit
35
35
  format:
36
36
  - json
37
37
  eos
@@ -1,5 +1,8 @@
1
1
  #!/usr/bin/env -S ruby -W0
2
2
  class Wikian
3
+ class WikianSubcommandError < StandardError; end
4
+ class MissingConfigFileError < WikianSubcommandError; end
5
+
3
6
  # class to be inherited by other Wikian classes
4
7
  class Subcommand
5
8
  attr_accessor :args, :res, :yaml, :query, :title, :api_url, :debug, :output_file
@@ -15,10 +18,14 @@ class Wikian
15
18
 
16
19
  @debug = (args & %w(-d --debug)).length > 0 ? true : false
17
20
 
21
+ raise MissingConfigFileError unless File.exist?(Wikian::CONFIG_FILE)
18
22
  @yaml=YAML.load(File.open(Wikian::CONFIG_FILE))
19
23
 
20
24
  # some params like 'titles' can contain multiple entries joined by '|'. More info in Wikipedia API docs
21
25
  @params = Hash[yaml['api'].keys.zip(yaml['api'].values.map{|arr| arr.join("|")})]
26
+ rescue MissingConfigFileError => e
27
+ puts "#{e.class} try passing the '-t' option to generate #{Wikian::CONFIG_FILE} in #{__FILE__}"
28
+ exit
22
29
  end
23
30
 
24
31
  def make_template
@@ -1,3 +1,3 @@
1
1
  class Wikian
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wikian
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - sergioro