ruby-mediawiki 0.1

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.
@@ -0,0 +1,39 @@
1
+ =begin
2
+ This file is part of Ruby-MediaWiki.
3
+
4
+ Ruby-MediaWiki is free software: you can redistribute it and/or
5
+ modify it under the terms of the GNU General Public License as
6
+ published by the Free Software Foundation, either version 3 of the
7
+ License, or (at your option) any later version.
8
+
9
+ Ruby-MediaWiki is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License
15
+ along with Ruby-MediaWiki. If not, see
16
+ <http://www.gnu.org/licenses/>.
17
+ =end
18
+
19
+ require 'mediawiki/article'
20
+
21
+ module MediaWiki
22
+ ##
23
+ # The SpecialPage class represents MediaWiki special pages.
24
+ class SpecialPage < Article
25
+
26
+ ##
27
+ # Reload the xhtml,
28
+ # will be automatically done by SpecialPage#xhtml if not already cached.
29
+ def xhtml_reload
30
+ html = @wiki.browser.get_content("#{@wiki.article_url(@name, @section)}")
31
+ html.scan(/<!-- start content -->(.+)<!-- end content -->/m) { |content,|
32
+ @xhtml = to_rexml( "<xhtml>#{content}</xhtml>" )
33
+ }
34
+ @xhtml_cached = true
35
+ end
36
+
37
+ end
38
+
39
+ end
@@ -0,0 +1,95 @@
1
+ =begin
2
+ This file is part of Ruby-MediaWiki.
3
+
4
+ Ruby-MediaWiki is free software: you can redistribute it and/or
5
+ modify it under the terms of the GNU General Public License as
6
+ published by the Free Software Foundation, either version 3 of the
7
+ License, or (at your option) any later version.
8
+
9
+ Ruby-MediaWiki is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License
15
+ along with Ruby-MediaWiki. If not, see
16
+ <http://www.gnu.org/licenses/>.
17
+ =end
18
+
19
+
20
+ module MediaWiki
21
+
22
+ ##
23
+ # The MediaWiki::Table class is used to parse existing
24
+ # tables from mediawiki articles and to create tables
25
+ # from arrays. Currently only the mediawiki pipe syntax is
26
+ # supported.
27
+ class Table
28
+ ##
29
+ # Initialize a Table instance
30
+ # data:: [Array] 2-dimensional Array with the tables and cells
31
+ # header:: [Array] 1-dimensional Array used as header
32
+ def initialize( data = [], header = [] )
33
+ @data = data
34
+ @header = header
35
+ end
36
+
37
+ attr_accessor :style, :header_style, :row_style, :data, :header
38
+
39
+ ##
40
+ # Creates the mediawiki markup to be put in an article
41
+ def text
42
+ markup = "{| #{@style}\n"
43
+ markup += "|---- #{@header_style}\n" if @header_style unless @header.empty?
44
+ markup += @header.collect{ | col | "!#{col}\n" }.join('') unless @header.empty?
45
+ @data.each do | row |
46
+ markup += "|---- #{@row_style}\n"
47
+ markup += row.collect{ | col | "|#{col}\n" }.join('')
48
+ end
49
+ markup += "|}"
50
+ markup
51
+ end
52
+
53
+ ##
54
+ # Parses the wiki markup of a table and returns a 2-dimensional
55
+ # array representing rows and columns of the table. Currently only
56
+ # the mediawiki pipe syntax is supported.
57
+ # text:: [String] String to parse
58
+ def self.parse( text )
59
+ table, row = nil, nil
60
+ text.each_line do | line |
61
+ if line.match( /^\{\|/ )
62
+ table, row = [], []
63
+ elsif table.nil?
64
+ # ignoring line probably not belonging to a table
65
+ elsif line.match( /^ *\|\}/ )
66
+ # end of table
67
+ table.push( row ) unless row.empty?
68
+ return table
69
+ elsif line.match( /^ *\|-/ )
70
+ # new row
71
+ table.push( row ) unless row.empty?
72
+ row = []
73
+ elsif match = line.match( /^ *(!|\|)$/ )
74
+ # cell without text
75
+ row.push( "" )
76
+ elsif match = line.match( /^ *!(.+)$/ )
77
+ # header line with cell(s)
78
+ match[1].split( /\|\||!!/, -1 ).each do | column | row.push( column.strip ) end
79
+ elsif match = line.match( /^ *\|(.+)$/ )
80
+ # ordinary line with cell(s)
81
+ match[1].split( '||', -1 ).each do | column | row.push( column.strip ) end
82
+ elsif match = line.match( /^ *[^!|][^|]*$/ )
83
+ # multiline cell
84
+ row[-1] += "\n" + line
85
+ else
86
+ raise "Error parsing the following line: #{line.inspect}"
87
+ end
88
+ end
89
+ []
90
+ end
91
+
92
+ end
93
+
94
+ end
95
+
@@ -0,0 +1,25 @@
1
+ default: wpen
2
+ wpen:
3
+ url: http://en.wikipedia.org/w/
4
+ wpde:
5
+ url: http://de.wikipedia.org/w/
6
+ wpfr:
7
+ url: http://fr.wikipedia.org/w/
8
+ c3d2:
9
+ url: https://eris:...@wiki.c3d2.de/
10
+ user: AstRobot
11
+ password: ...
12
+ speed metal bot:
13
+ category: Ruby
14
+ user prefix: Benutzer
15
+ template: Rübÿ Spëëd Mëtäl Cödïng
16
+ date determinator:
17
+ pages:
18
+ - Benutzer:Astro/Date_Determinator
19
+ rdoc to wiki:
20
+ title: Ruby-MediaWiki Documentation
21
+ page: Ruby-MediaWiki/Documentation
22
+ blabla:
23
+ url: http://blabla.gov/wiki/
24
+ user: GWBush
25
+ password: Saddam
@@ -0,0 +1,3 @@
1
+ #!/bin/sh
2
+ rdoc --inline-source --line-numbers --op rdoc lib/mediawiki.rb lib/mediawiki/*.rb
3
+ rdoc --inline-source --line-numbers --op rdoc-ri -f ri lib/mediawiki.rb lib/mediawiki/*.rb
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.4
3
+ specification_version: -1
4
+ name: ruby-mediawiki
5
+ version: !ruby/object:Gem::Version
6
+ version: "0.1"
7
+ date: 2007-10-23 19:00:00 +02:00
8
+ summary: Ruby-MediaWiki 0.1
9
+ require_paths:
10
+ - lib
11
+ email: stephan@spaceboyz.net
12
+ homepage: https://wiki.c3d2.de/Ruby-MediaWiki
13
+ rubyforge_project: ruby-mediawiki
14
+ description: A library to retrieve and modify content managed by the popular MediaWiki software.
15
+ autorequire:
16
+ default_executable:
17
+ bindir:
18
+ has_rdoc: true
19
+ required_ruby_version:
20
+ platform: ruby
21
+ signing_key:
22
+ cert_chain:
23
+ post_install_message:
24
+ authors:
25
+ - Sven Klemm
26
+ - Stephan Maka
27
+ - Mike Gerber
28
+ - Michael Witrant
29
+ files:
30
+ - apps/comment_sync.rb
31
+ - apps/iso_639_leecher.rb
32
+ - apps/localization_sync.rb
33
+ - apps/speed_metal_bot.rb
34
+ - apps/wikipost.rb
35
+ - apps/date_determinator.rb
36
+ - apps/wikicat.rb
37
+ - apps/rdoc_to_wiki.rb
38
+ - lib/mediawiki/category.rb
39
+ - lib/mediawiki/specialpage.rb
40
+ - lib/mediawiki/minibrowser.rb
41
+ - lib/mediawiki/article.rb
42
+ - lib/mediawiki/dotfile.rb
43
+ - lib/mediawiki/table.rb
44
+ - lib/mediawiki.rb
45
+ - COPYING
46
+ - mediawikirc.sample
47
+ - mkrdoc.sh
48
+ - README
49
+ test_files:
50
+ rdoc_options:
51
+ - --title
52
+ - Ruby-MediaWiki
53
+ - -m
54
+ - MediaWiki
55
+ - --line-numbers
56
+ - --inline-source
57
+ extra_rdoc_files:
58
+ executables:
59
+ extensions:
60
+ requirements:
61
+ dependencies: []
62
+