wikipedia-client 1.7.1 → 1.11.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
- SHA1:
3
- metadata.gz: d8024a11ef6429ca95c92e25f64702723e4ef490
4
- data.tar.gz: aefa68138e1a5f9bd4b764628c51577f2d82e887
2
+ SHA256:
3
+ metadata.gz: e46200632341e7d38bd759fd3d680c8c004c82e32335c39f63f6aacbb75f7101
4
+ data.tar.gz: 7fd44fa8cbbfc78aee4657ea65c57fb809229be83c8e9df65a2546932a0cb0d2
5
5
  SHA512:
6
- metadata.gz: fe5bc76004bc8dca7530f87ac9b2c719c14bf45e81b9285da6e6f08c2b894c2e24e6baf8a5242a46611ec6e359c16c9be87088420e4da24077dc0e6dce04dca4
7
- data.tar.gz: 951a31d710ac2e3a69c10b37bb4e07a456e5bf6a77e5607f06f5eb46ccaf7bbaaf13612d34d5169119cebcd60dfde8cf036448311e0228bb92b203c4809c9730
6
+ metadata.gz: 56c10fc45302054c0cc839fb5a0b29d67739d7971f30d91925a7cd8451b5788e1460bc074fca872b6efc9202f42562d4618a7966bf46fccc5aa44e105f05e6be
7
+ data.tar.gz: 6c3a829eb521be344e89a89081b3be7a5339dacafe16a1dca1ec19cd36db603daf9c29c6cdbaaa87abc27f471ec14766733d6deffb436f46070ae8782a3b33cc
data/.rubocop.yml CHANGED
@@ -24,4 +24,4 @@ Style/SymbolArray:
24
24
  Enabled: false
25
25
 
26
26
  Metrics/ClassLength:
27
- Max: 120
27
+ Max: 130
data/.travis.yml CHANGED
@@ -1,3 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.2.2
3
+ - 2.0
4
+ - 2.1
5
+ - 2.2
6
+ - 2.3
7
+ - 2.4
8
+ - 2.5
data/Gemfile.lock CHANGED
@@ -1,72 +1,85 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- wikipedia-client (1.7.1)
4
+ wikipedia-client (1.11.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- addressable (2.3.5)
9
+ addressable (2.4.0)
10
10
  ast (2.3.0)
11
- builder (3.2.2)
12
- diff-lcs (1.3)
13
- faraday (0.8.8)
14
- multipart-post (~> 1.2.0)
15
- git (1.2.6)
16
- github_api (0.10.1)
17
- addressable
18
- faraday (~> 0.8.1)
19
- hashie (>= 1.2)
20
- multi_json (~> 1.4)
21
- nokogiri (~> 1.5.2)
22
- oauth2
23
- hashie (2.0.5)
24
- highline (1.6.19)
25
- httpauth (0.2.0)
26
- jeweler (1.8.8)
11
+ builder (3.2.4)
12
+ coderay (1.1.3)
13
+ descendants_tracker (0.0.4)
14
+ thread_safe (~> 0.3, >= 0.3.1)
15
+ diff-lcs (1.4.4)
16
+ faraday (0.9.2)
17
+ multipart-post (>= 1.2, < 3)
18
+ git (1.8.1)
19
+ rchardet (~> 1.8)
20
+ github_api (0.16.0)
21
+ addressable (~> 2.4.0)
22
+ descendants_tracker (~> 0.0.4)
23
+ faraday (~> 0.8, < 0.10)
24
+ hashie (>= 3.4)
25
+ mime-types (>= 1.16, < 3.0)
26
+ oauth2 (~> 1.0)
27
+ hashie (4.1.0)
28
+ highline (2.0.3)
29
+ jeweler (2.3.9)
27
30
  builder
28
- bundler (~> 1.0)
31
+ bundler
29
32
  git (>= 1.2.5)
30
- github_api (= 0.10.1)
33
+ github_api (~> 0.16.0)
31
34
  highline (>= 1.6.15)
32
- nokogiri (= 1.5.10)
35
+ nokogiri (>= 1.5.10)
36
+ psych
33
37
  rake
34
38
  rdoc
35
- json (1.8.6)
36
- jwt (0.1.8)
37
- multi_json (>= 1.5)
38
- multi_json (1.8.1)
39
- multi_xml (0.5.5)
40
- multipart-post (1.2.0)
41
- nokogiri (1.5.10)
42
- oauth2 (0.9.2)
43
- faraday (~> 0.8)
44
- httpauth (~> 0.2)
45
- jwt (~> 0.1.4)
46
- multi_json (~> 1.0)
39
+ semver2
40
+ jwt (2.2.2)
41
+ method_source (1.0.0)
42
+ mime-types (2.99.3)
43
+ mini_portile2 (2.5.0)
44
+ multi_json (1.15.0)
45
+ multi_xml (0.6.0)
46
+ multipart-post (2.1.1)
47
+ nokogiri (1.11.2)
48
+ mini_portile2 (~> 2.5.0)
49
+ racc (~> 1.4)
50
+ oauth2 (1.4.7)
51
+ faraday (>= 0.8, < 2.0)
52
+ jwt (>= 1.0, < 3.0)
53
+ multi_json (~> 1.3)
47
54
  multi_xml (~> 0.5)
48
- rack (~> 1.2)
55
+ rack (>= 1.2, < 3)
49
56
  parser (2.4.0.0)
50
57
  ast (~> 2.2)
51
58
  powerpack (0.1.1)
52
- rack (1.5.2)
59
+ pry (0.14.0)
60
+ coderay (~> 1.1)
61
+ method_source (~> 1.0)
62
+ psych (3.3.1)
63
+ racc (1.5.2)
64
+ rack (2.2.3)
53
65
  rainbow (2.2.2)
54
66
  rake
55
- rake (10.1.0)
56
- rdoc (4.0.1)
57
- json (~> 1.4)
58
- rspec (3.0.0)
59
- rspec-core (~> 3.0.0)
60
- rspec-expectations (~> 3.0.0)
61
- rspec-mocks (~> 3.0.0)
62
- rspec-core (3.0.4)
63
- rspec-support (~> 3.0.0)
64
- rspec-expectations (3.0.4)
67
+ rake (13.0.3)
68
+ rchardet (1.8.0)
69
+ rdoc (6.3.0)
70
+ rspec (3.10.0)
71
+ rspec-core (~> 3.10.0)
72
+ rspec-expectations (~> 3.10.0)
73
+ rspec-mocks (~> 3.10.0)
74
+ rspec-core (3.10.1)
75
+ rspec-support (~> 3.10.0)
76
+ rspec-expectations (3.10.1)
65
77
  diff-lcs (>= 1.2.0, < 2.0)
66
- rspec-support (~> 3.0.0)
67
- rspec-mocks (3.0.4)
68
- rspec-support (~> 3.0.0)
69
- rspec-support (3.0.4)
78
+ rspec-support (~> 3.10.0)
79
+ rspec-mocks (3.10.2)
80
+ diff-lcs (>= 1.2.0, < 2.0)
81
+ rspec-support (~> 3.10.0)
82
+ rspec-support (3.10.2)
70
83
  rubocop (0.48.1)
71
84
  parser (>= 2.3.3.1, < 3.0)
72
85
  powerpack (~> 0.1)
@@ -74,20 +87,23 @@ GEM
74
87
  ruby-progressbar (~> 1.7)
75
88
  unicode-display_width (~> 1.0, >= 1.0.1)
76
89
  ruby-progressbar (1.8.1)
90
+ semver2 (3.4.2)
77
91
  thoughtbot-shoulda (2.11.1)
92
+ thread_safe (0.3.6)
78
93
  unicode-display_width (1.2.1)
79
94
 
80
95
  PLATFORMS
81
96
  ruby
82
97
 
83
98
  DEPENDENCIES
84
- jeweler (~> 1.8)
85
- rake (~> 10.1)
86
- rdoc (~> 4.0)
99
+ jeweler (~> 2.0)
100
+ pry
101
+ rake (~> 13.0)
102
+ rdoc (~> 6.0)
87
103
  rspec (~> 3.0)
88
104
  rubocop (~> 0.48)
89
105
  thoughtbot-shoulda (~> 2.11, >= 2.11)
90
106
  wikipedia-client!
91
107
 
92
108
  BUNDLED WITH
93
- 1.15.1
109
+ 1.17.2
data/README.textile CHANGED
@@ -60,6 +60,18 @@ page.image_urls
60
60
 
61
61
  => ["http://upload.wikimedia.org/wikipedia/en/e/e1/Getting_Things_Done.jpg"]
62
62
 
63
+ default width: 200
64
+
65
+ page.image_thumburls
66
+
67
+ => ["https://upload.wikimedia.org/wikipedia/en/thumb/e/e1/Getting_Things_Done.jpg/200px-Getting_Things_Done.jpg"]
68
+
69
+ or with custom width argument:
70
+
71
+ page.image_thumburls(100)
72
+
73
+ => ["https://upload.wikimedia.org/wikipedia/en/thumb/e/e1/Getting_Things_Done.jpg/100px-Getting_Things_Done.jpg"]
74
+
63
75
  page.image_descriptionurls
64
76
 
65
77
  => ["http://en.wikipedia.org/wiki/File:Getting_Things_Done.jpg"]
@@ -74,7 +86,11 @@ page.coordinates
74
86
 
75
87
  page.templates
76
88
 
77
- => [..., "Template:About", ...]</code></pre>
89
+ => [..., "Template:About", ...]
90
+
91
+ page.langlinks
92
+
93
+ => {..., "de"=>"Getting Things Done", "eo"=>"Igi aferojn finitaj", "zh"=>"尽管去做", ...}</code></pre>
78
94
 
79
95
  h2. Configuration
80
96
 
@@ -89,8 +105,7 @@ h2. Advanced
89
105
 
90
106
  See the API spec at "http://en.wikipedia.org/w/api.php":http://en.wikipedia.org/w/api.php
91
107
 
92
- If you need data that is not already present, you can override
93
- parameters.
108
+ If you need data that is not already present, you can override parameters.
94
109
 
95
110
  For example, to retrieve only the page info:
96
111
 
@@ -150,3 +165,4 @@ Pietro F. Menna <pietromenna@yahoo.com>
150
165
  Sophie Rapoport <sfrapoport@gmail.com>
151
166
  tsukasaoishi <tsukasa.oishi@gmail.com>
152
167
  V <thevalentino@gmail.com>
168
+ Ilgiz Mustafin <ilgimustafin@gmail.com>
@@ -34,20 +34,23 @@ module Wikipedia
34
34
  def request_page( title, options = {} )
35
35
  request( {
36
36
  action: 'query',
37
- prop: %w[ info revisions links extlinks images categories coordinates templates extracts pageimages],
37
+ prop: %w[info revisions links extlinks images categories coordinates templates extracts pageimages langlinks],
38
38
  rvprop: 'content',
39
39
  inprop: 'url',
40
+ pithumbsize: 200,
40
41
  explaintext: '',
42
+ lllimit: 500,
41
43
  titles: title
42
44
  }.merge( options ) )
43
45
  end
44
46
 
45
- # http://en.wikipedia.org/w/api.php?action=query&format=json&prop=imageinfo&iiprop=url&titles=File:Flower.png
47
+ # http://en.wikipedia.org/w/api.php?action=query&format=json&prop=imageinfo&iiprop=url&iiurlwidth=200&titles=File:Albert%20Einstein%20Head.jpg
46
48
  def request_image( title, options = {} )
47
49
  request( {
48
50
  action: 'query',
49
51
  prop: 'imageinfo',
50
52
  iiprop: 'url',
53
+ iiurlwidth: options && options[:iiurlwidth] ? options[:iiurlwidth] : 200,
51
54
  titles: title
52
55
  }.merge( options ) )
53
56
  end
@@ -103,7 +106,7 @@ module Wikipedia
103
106
  def encode( val )
104
107
  case val
105
108
  when String
106
- URI.encode( val ).gsub( '&', '%26' )
109
+ CGI.escape(val)
107
110
  else
108
111
  val
109
112
  end
@@ -60,6 +60,10 @@ module Wikipedia
60
60
  page['extlinks'].map { |c| c['*'] } if page['extlinks']
61
61
  end
62
62
 
63
+ def langlinks
64
+ Hash[page['langlinks'].collect { |c| [c['lang'], c['*']] }] if page['langlinks']
65
+ end
66
+
63
67
  def images
64
68
  page['images'].map { |c| c['title'] } if page['images']
65
69
  end
@@ -68,6 +72,10 @@ module Wikipedia
68
72
  page['imageinfo'].first['url'] if page['imageinfo']
69
73
  end
70
74
 
75
+ def image_thumburl
76
+ page['imageinfo'].first['thumburl'] if page['imageinfo']
77
+ end
78
+
71
79
  def image_descriptionurl
72
80
  page['imageinfo'].first['descriptionurl'] if page['imageinfo']
73
81
  end
@@ -76,6 +84,11 @@ module Wikipedia
76
84
  image_metadata.map(&:image_url) unless image_metadata.nil?
77
85
  end
78
86
 
87
+ def image_thumburls( width = nil )
88
+ options = width.nil? ? {} : { iiurlwidth: width }
89
+ image_metadata( options ).map(&:image_thumburl) unless image_metadata( options ).nil?
90
+ end
91
+
79
92
  def image_descriptionurls
80
93
  image_metadata.map(&:image_descriptionurl) unless image_metadata.nil?
81
94
  end
@@ -84,6 +97,10 @@ module Wikipedia
84
97
  page['thumbnail']['source'].sub(/\/thumb/, '').sub(/\/[^\/]*$/, '') if page['thumbnail']
85
98
  end
86
99
 
100
+ def main_image_thumburl
101
+ page['thumbnail']['source'] if page['thumbnail']
102
+ end
103
+
87
104
  def coordinates
88
105
  page['coordinates'].first.values if page['coordinates']
89
106
  end
@@ -92,11 +109,11 @@ module Wikipedia
92
109
  @data
93
110
  end
94
111
 
95
- def image_metadata
112
+ def image_metadata( options = {} )
96
113
  unless @cached_image_metadata
97
114
  return if images.nil?
98
115
  filtered = images.select { |i| i =~ /:.+\.(jpg|jpeg|png|gif|svg)$/i && !i.include?('LinkFA-star') }
99
- @cached_image_metadata = filtered.map { |title| Wikipedia.find_image(title) }
116
+ @cached_image_metadata = filtered.map { |title| Wikipedia.find_image(title, options) }
100
117
  end
101
118
  @cached_image_metadata || []
102
119
  end
data/lib/wikipedia/url.rb CHANGED
@@ -8,7 +8,7 @@ module Wikipedia
8
8
  return @title if @title
9
9
 
10
10
  uri = URI.parse( @wiki_url )
11
- @title = URI.decode( uri.path.split('/').last )
11
+ @title = URI.decode( uri.path.sub(/\/wiki\//, '') )
12
12
  end
13
13
  end
14
14
  end
@@ -1,3 +1,3 @@
1
1
  module Wikipedia
2
- VERSION = '1.7.1'.freeze
2
+ VERSION = '1.11.0'.freeze
3
3
  end
@@ -0,0 +1 @@
1
+ {"continue":{"plcontinue":"46867293|0|Alkeyevsky_District","tlcontinue":"46867293|10|Infobox_Russian_town","continue":"||info|revisions|extlinks|images|categories|coordinates|extracts|pageimages|langlinks"},"warnings":{"extracts":{"*":"\"exlimit\" was too large for a whole article extracts request, lowered to 1."}},"query":{"pages":{"46867293":{"pageid":46867293,"ns":0,"title":"Innopolis","contentmodel":"wikitext","pagelanguage":"en","pagelanguagehtmlcode":"en","pagelanguagedir":"ltr","touched":"2018-03-17T20:09:26Z","lastrevid":826758180,"length":7900,"fullurl":"https://en.wikipedia.org/wiki/Innopolis","editurl":"https://en.wikipedia.org/w/index.php?title=Innopolis&action=edit","canonicalurl":"https://en.wikipedia.org/wiki/Innopolis","revisions":[{"contentformat":"text/x-wiki","contentmodel":"wikitext","*":"{{Distinguish|Innopoli}}\n\n{{Infobox Russian town\n|en_name=Innopolis\n|ru_name=\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441\n|loc_name1=\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441\n|loc_lang1=Tatar\n|image_skyline=\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441. \u0422\u0435\u0445\u043d\u043e\u043f\u0430\u0440\u043a \u0438\u043c. \u0410.\u0421. \u041f\u043e\u043f\u043e\u0432\u0430.JPG\n|image_caption=A.S.&nbsp;Popov [[science park|technology park]] in Innopolis\n|coordinates = {{coord|55|44|N|48|44|E|display=inline,title}}\n|map_label_position=right\n|image_coa=\n|coa_caption=\n|image_flag=\n|flag_caption=\n|anthem=\n|anthem_ref=\n|holiday=\n|holiday_ref=\n|federal_subject=[[Republic of Tatarstan]]\n|federal_subject_ref=<ref name=\"RTatarstan_admlist\" />\n|adm_data_as_of=March 2015\n|adm_district_jur=[[Verkhneuslonsky District]]\n|adm_district_jur_ref=<ref name=\"RTatarstan_admlist\" />\n|inhabloc_cat=Town\n|inhabloc_cat_ref=<ref name=\"RTatarstan_admlist\" />\n|inhabloc_type=\n|inhabloc_type_ref=\n|mun_data_as_of=December 2014\n|mun_district_jur=Verkhneuslonsky Municipal District\n|mun_district_jur_ref=<ref name=\"RTatarstanVerkhneuslonskyD_mun\" />\n|urban_settlement_jur=Innopolis Urban Settlement\n|urban_settlement_jur_ref=<ref name=\"RTatarstanVerkhneuslonskyD_mun\" />\n|mun_admctr_of=Innopolis Urban Settlement\n|mun_admctr_of_ref=<ref name=\"RTatarstanVerkhneuslonskyD_mun\" />\n|leader_title=\n|leader_title_ref=\n|leader_name=\n|leader_name_ref=\n|representative_body=\n|representative_body_ref=\n|area_of_what=\n|area_as_of=\n|area_km2=\n|area_km2_ref=\n<!--\n|pop_2010census=did not exist in 2010\n|pop_2010census_ref=-->\n|pop_density=\n|pop_density_as_of=\n|pop_density_ref=\n|pop_latest=96\n|pop_latest_date=2016\n|pop_latest_ref=<ref name=\"2016Est\" />\n|established_date=December&nbsp;24, 2012\n|established_title=\n|established_date_ref=<ref name=\"Established\" />\n|current_cat_date=December&nbsp;16, 2014\n|current_cat_date_ref=<ref name=\"TownStatus\" />\n|postal_codes=420500\n|dialing_codes=\n|dialing_codes_ref=\n|website=http://www.innopolis.ru\n|website_ref=\n|date=June 2015\n}}\n'''Innopolis''' ({{lang-ru|\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441}}; {{lang-tt|\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441|Innopolis}}) is a [[types of inhabited localities in Russia|town]] in [[Verkhneuslonsky District]] of the [[Republic of Tatarstan]], [[Russia]], a [[satellite town|satellite]] of [[Kazan]], the [[capital city|capital]] of the republic.\n\nThis is the smallest town in Russia<ref>http://www.photokzn.ru/news/0/8880-innopolis</ref> with 96&nbsp;inhabitants according to the 2016 estimate.<ref name=\"2016Est\">Republic of Tatarstan Territorial Branch of the [[Russian Federal State Statistics Service|Federal State Statistics Service]]. [http://tatstat.gks.ru/wps/wcm/connect/rosstat_ts/tatstat/resources/4f3274804c0d84f9ab87abc621b350d8/%D0%9C%D0%9E%D1%87%D0%B8%D1%81%D0%BB2016.pdf \u0427\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u043e 2016&nbsp;\u0433.] {{ru icon}}</ref>\n\n==History==\n[[File:Medvedev, Nikiforov, Minnihanov in Kazan Innopolis (groundbreaking ceremony).jpeg|thumb|left|Inauguration of the Innopolis' foundation, June 2012. Left to right: [[Rustam Minnikhanov]], the [[President of the Republic of Tatarstan]]; [[Dmitry Medvedev]], the [[Prime Minister of Russia]]; [[Nikolay Nikiforov]], [[Ministry of Communications and Mass Media (Russia)|Minister of Communications and Mass Media]]]]\n\n[[File:Residental area.jpg|thumb|left|Residential area]]\n[[File:Innopolis University.jpg|thumb|left|The main building of the University of Innopolis]]\n\nInnopolis was established on December&nbsp;24, 2012<ref name=\"Established\">Resolution #2622-IV-GS</ref> as a technology park. Town status was granted to it on December&nbsp;16, 2014.<ref name=\"TownStatus\">Law #115-ZRT</ref>\n\n==Administrative and municipal status==\nWithin the [[subdivisions of Russia#Administrative divisions|framework of administrative divisions]], the [[types of inhabited localities in Russia|town]] of Innopolis is subordinated to [[Verkhneuslonsky District]].<ref name=\"RTatarstan_admlist\">Order #01-02/9</ref> As a [[subdivisions of Russia#Municipal divisions|municipal division]], Innopolis is incorporated within Verkhneuslonsky Municipal District as '''Innopolis Urban Settlement'''.<ref name=\"RTatarstanVerkhneuslonskyD_mun\">Law #19-ZRT</ref>\n\n\n==Urban Infrastructure==\nThe basis of the housing stock of Innopolis is 4 blocks of multi-storey apartment houses - 16 houses for 840 apartments - built by the State Housing Fund under the President of the Republic of Tatarstan and intended for leasing to residents of Innopolis and students.\n\nAs of the end of 2016, there was a kindergarten, a school, an IT lyceum, a sports and medical center, post offices, client offices of AK Bars and Sberbank, a beauty salon, a coffee shop and a supermarket in Innopolis.\n\n==References==\n===Notes===\n{{Reflist}}\n\n===Sources===\n*{{RussiaAdmMunRef|ta|adm|list}}\n*{{RussiaAdmMunRef|ta|mun|list|verkhneuslonsky}}\n*{{Cite Russian law\n|ru_entity=\u0413\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0421\u043e\u0432\u0435\u0442 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\n|ru_type=\u041f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\n|ru_number=2622-IV-\u0413\u0421\n|ru_date=24 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2012 \u0433.\n|ru_title=\u041e\u0431 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0430\u0441\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430&nbsp;\u2014 \u043f\u043e\u0441\u0451\u043b\u043a\u0430 \u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441 \u043d\u0430 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0438 \u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\n|ru_effective_date=\n|ru_published_in=\"\u0412\u0435\u0434\u043e\u043c\u043e\u0441\u0442\u0438 \u0413\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0421\u043e\u0432\u0435\u0442\u0430 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\u0430\", \u211612 (III&nbsp;\u0447\u0430\u0441\u0442\u044c), \u0441\u0442.&nbsp;1926\n|ru_published_date=2012\n|ru_url=\n|en_entity=[[State Council of the Republic of Tatarstan]]\n|en_type=Resolution\n|en_number=2622-IV-GS\n|en_date=December&nbsp;24, 2012\n|en_title=On Establishing an Inhabited Locality\u2014the Settlement of Innopolis\u2014on the Territory of Verkhneuslonsky District of the Republic of Tatarstan\n|en_effective_date=\n|en_url=\n}}\n*{{Cite Russian law\n|ru_entity=\u0413\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0421\u043e\u0432\u0435\u0442 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\n|ru_type=\u0417\u0430\u043a\u043e\u043d\n|ru_number=115-\u0417\u0420\u0422\n|ru_date=13 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2014 \u0433.\n|ru_title=\u041e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u0441\u0451\u043b\u043a\u0430 \u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441 \u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0412\u0432\u0435\u0434\u0435\u043d\u0441\u043a\u043e-\u0421\u043b\u043e\u0431\u043e\u0434\u0441\u043a\u043e\u0433\u043e \u0441\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0441\u0435\u043b\u0435\u043d\u0438\u044f \u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0417\u0430\u043a\u043e\u043d \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d \"\u041e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \"\u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u0438\u0439 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0439\u043e\u043d\" \u0438 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0432 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0435\"\n|ru_effective_date=\u0441\u043e \u0434\u043d\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0438\u044f\n|ru_published_in=\"\u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\", \u2116183\n|ru_published_date=16 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2014 \u0433\n|ru_url=\n|en_entity=[[State Council of the Republic of Tatarstan]]\n|en_type=Law\n|en_number=115-ZRT\n|en_date=December&nbsp;13, 2014\n|en_title=On the Transformation of the Settlement of Innopolis in Verkhneuslonsky District, on Changing the Borders of Several Municipal Formations, and on Transforming Vvedensko-Slobodskoye Rural Settlement in Verkhneuslonsky Municipal District, as well as Amending the Law of the Republic of Tatarstan \"On Establishing the Borders of the Territories and the Status of the Municipal Formation of \"Verkhneuslonsky Municipal District\" and of the Municipal Formations It Comprises\"\n|en_effective_date=the day of the official publication\n|en_url=\n}}\n\n{{Republic of Tatarstan}}\n{{Use mdy dates|date=June 2015}}\n\n[[Category:Cities and towns in Tatarstan]]\n[[Category:Populated places established in 2012]]\n[[Category:Naukograds]]\n[[Category:Information technology places]]"}],"links":[{"ns":0,"title":"Administrative centre"},{"ns":0,"title":"Administrative divisions of the Republic of Tatarstan"},{"ns":0,"title":"Agryz"},{"ns":0,"title":"Agryzsky District"},{"ns":0,"title":"Aksubayevo"},{"ns":0,"title":"Aksubayevsky District"},{"ns":0,"title":"Aktanyshsky District"},{"ns":0,"title":"Aktyubinsky, Republic of Tatarstan"},{"ns":0,"title":"Alexeyevskoye, Republic of Tatarstan"},{"ns":0,"title":"Alexeyevsky District, Republic of Tatarstan"}],"extlinks":[{"*":"//tools.wmflabs.org/geohack/geohack.php?pagename=Innopolis&params=55_44_N_48_44_E_region:RU-TA_type:city"},{"*":"http://pravo.tatarstan.ru"},{"*":"http://tatstat.gks.ru/wps/wcm/connect/rosstat_ts/tatstat/resources/4f3274804c0d84f9ab87abc621b350d8/%D0%9C%D0%9E%D1%87%D0%B8%D1%81%D0%BB2016.pdf"},{"*":"http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http://www.consultant.ru/cons/cgi/online.cgi?req=doc&base=LAW&n=201180"},{"*":"http://vinfo.russianpost.ru/servlet/department"},{"*":"http://www.consultant.ru/cons/cgi/online.cgi?req=doc&base=LAW&n=201180"},{"*":"http://www.innopolis.ru"},{"*":"http://www.photokzn.ru/news/0/8880-innopolis"}],"images":[{"ns":6,"title":"File:Coat of Arms of Tatarstan.svg"},{"ns":6,"title":"File:Flag of Tatarstan.svg"},{"ns":6,"title":"File:Innopolis University.jpg"},{"ns":6,"title":"File:Map of Russia - Republic of Tatarstan (2008-03).svg"},{"ns":6,"title":"File:Medvedev, Nikiforov, Minnihanov in Kazan Innopolis (groundbreaking ceremony).jpeg"},{"ns":6,"title":"File:Outline Map of Tatarstan.svg"},{"ns":6,"title":"File:Red pog.svg"},{"ns":6,"title":"File:Residental area.jpg"},{"ns":6,"title":"File:\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441. \u0422\u0435\u0445\u043d\u043e\u043f\u0430\u0440\u043a \u0438\u043c. \u0410.\u0421. \u041f\u043e\u043f\u043e\u0432\u0430.JPG"}],"categories":[{"ns":14,"title":"Category:Articles containing Russian-language text"},{"ns":14,"title":"Category:Articles containing Tatar-language text"},{"ns":14,"title":"Category:Articles with Russian-language external links"},{"ns":14,"title":"Category:Cities and towns in Tatarstan"},{"ns":14,"title":"Category:Coordinates on Wikidata"},{"ns":14,"title":"Category:Information technology places"},{"ns":14,"title":"Category:Naukograds"},{"ns":14,"title":"Category:Populated places established in 2012"},{"ns":14,"title":"Category:Use mdy dates from June 2015"}],"coordinates":[{"lat":55.73333333,"lon":48.73333333,"primary":"","globe":"earth"}],"templates":[{"ns":10,"title":"Template:Category handler"},{"ns":10,"title":"Template:Cite Russian law"},{"ns":10,"title":"Template:Coord"},{"ns":10,"title":"Template:DMCA"},{"ns":10,"title":"Template:Dated maintenance category"},{"ns":10,"title":"Template:Distinguish"},{"ns":10,"title":"Template:FULLROOTPAGENAME"},{"ns":10,"title":"Template:ISO 639 name ru"},{"ns":10,"title":"Template:Infobox"},{"ns":10,"title":"Template:Infobox Russian inhabited locality"}],"extract":"Innopolis (Russian: \u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441; Tatar: Cyrillic \u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441, Latin Innopolis) is a town in Verkhneuslonsky District of the Republic of Tatarstan, Russia, a satellite of Kazan, the capital of the republic.\nThis is the smallest town in Russia with 96 inhabitants according to the 2016 estimate.\n\n\n== History ==\n\nInnopolis was established on December 24, 2012 as a technology park. Town status was granted to it on December 16, 2014.\n\n\n== Administrative and municipal status ==\nWithin the framework of administrative divisions, the town of Innopolis is subordinated to Verkhneuslonsky District. As a municipal division, Innopolis is incorporated within Verkhneuslonsky Municipal District as Innopolis Urban Settlement.\n\n\n== Urban Infrastructure ==\nThe basis of the housing stock of Innopolis is 4 blocks of multi-storey apartment houses - 16 houses for 840 apartments - built by the State Housing Fund under the President of the Republic of Tatarstan and intended for leasing to residents of Innopolis and students.\nAs of the end of 2016, there was a kindergarten, a school, an IT lyceum, a sports and medical center, post offices, client offices of AK Bars and Sberbank, a beauty salon, a coffee shop and a supermarket in Innopolis.\n\n\n== References ==\n\n\n=== Notes ===\n\n\n=== Sources ===\n\u041c\u0438\u043d\u0438\u0441\u0442\u0435\u0440\u0441\u0442\u0432\u043e \u044e\u0441\u0442\u0438\u0446\u0438\u0438 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d. \u041f\u0440\u0438\u043a\u0430\u0437 \u211601-02/9 \u043e\u0442 4 \u0444\u0435\u0432\u0440\u0430\u043b\u044f 2014 \u0433. \u00ab\u041e\u0431 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0438 \u0440\u0435\u0435\u0441\u0442\u0440\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u043e-\u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0435\u0434\u0438\u043d\u0438\u0446 \u0438 \u043d\u0430\u0441\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u0432 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0435 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\u00bb, \u0432 \u0440\u0435\u0434. \u041f\u0440\u0438\u043a\u0430\u0437\u0430 \u211601-02/160 \u043e\u0442 11 \u043c\u0430\u0440\u0442\u0430 2015 \u0433. \u00ab\u041e \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u041f\u0440\u0438\u043a\u0430\u0437 \u041c\u0438\u043d\u0438\u0441\u0442\u0435\u0440\u0441\u0442\u0432\u0430 \u044e\u0441\u0442\u0438\u0446\u0438\u0438 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d \u043e\u0442 04.02.2014 \u211601-02/9 \"\u041e\u0431 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0438 \u0440\u0435\u0435\u0441\u0442\u0440\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u043e-\u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0435\u0434\u0438\u043d\u0438\u0446 \u0438 \u043d\u0430\u0441\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u0432 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0435 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\"\u00bb. \u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d: \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u043f\u0440\u0430\u0432\u043e\u0432\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u041c\u0438\u043d\u0438\u0441\u0442\u0435\u0440\u0441\u0442\u0432\u0430 \u044e\u0441\u0442\u0438\u0446\u0438\u0438 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d (http://pravo.tatarstan.ru), 27 \u0444\u0435\u0432\u0440\u0430\u043b\u044f 2014 \u0433. (Ministry of Justice of the Republic of Tatarstan. Order #01-02/9 of February 4, 2014 On the Adoption of the Registry of the Administrative-Territorial Units and Inhabited Localities in the Republic of Tatarstan, as amended by the Order #01-02/160 of March 11, 2015 On Amending the Order of the Ministry of Justice of the Republic of Tatarstan #01-02/9 of February 4, 2014 \"On the Adoption of the Registry of the Administrative-Territorial Units and Inhabited Localities in the Republic of Tatarstan\". ).\n\u0413\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0421\u043e\u0432\u0435\u0442 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d. \u0417\u0430\u043a\u043e\u043d \u211619-\u0417\u0420\u0422 \u043e\u0442 31 \u044f\u043d\u0432\u0430\u0440\u044f 2005 \u0433. \u00ab\u041e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \"\u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u0438\u0439 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0439\u043e\u043d\" \u0438 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0432 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0435\u00bb, \u0432 \u0440\u0435\u0434. \u0417\u0430\u043a\u043e\u043d\u0430 \u2116115-\u0417\u0420\u0422 \u043e\u0442 13 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2014 \u0433. \u00ab\u041e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u0441\u0451\u043b\u043a\u0430 \u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441 \u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0412\u0432\u0435\u0434\u0435\u043d\u0441\u043a\u043e-\u0421\u043b\u043e\u0431\u043e\u0434\u0441\u043a\u043e\u0433\u043e \u0441\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0441\u0435\u043b\u0435\u043d\u0438\u044f \u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0417\u0430\u043a\u043e\u043d \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d \"\u041e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \"\u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u0438\u0439 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0439\u043e\u043d\" \u0438 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0432 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0435\"\u00bb. \u0412\u0441\u0442\u0443\u043f\u0438\u043b \u0432 \u0441\u0438\u043b\u0443 \u0441\u043e \u0434\u043d\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0438\u044f. \u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d: \"\u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\", \u2116\u211618\u201319, 1 \u0444\u0435\u0432\u0440\u0430\u043b\u044f 2005 \u0433. (State Council of the Republic of Tatarstan. Law #19-ZRT of January 31, 2005 On Establishing the Borders of the Territories and the Status of the Municipal Formation of \"Verkhneuslonsky Municipal District\" and of the Municipal Formations It Comprises, as amended by the Law #115-ZRT of December 13, 2014 On the Transformation of the Settlement of Innopolis in Verkhneuslonsky District, on Changing the Borders of Several Municipal Formations, and on Transforming Vvedensko-Slobodskoye Rural Settlement in Verkhneuslonsky Municipal District, as well as Amending the Law of the Republic of Tatarstan \"On Establishing the Borders of the Territories and the Status of the Municipal Formation of \"Verkhneuslonsky Municipal District\" and of the Municipal Formations It Comprises\". Effective as of the day of the official publication.).\n\u0413\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0421\u043e\u0432\u0435\u0442 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d. \u041f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u21162622-IV-\u0413\u0421 \u043e\u0442 24 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2012 \u0433. \u00ab\u041e\u0431 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0430\u0441\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u2014 \u043f\u043e\u0441\u0451\u043b\u043a\u0430 \u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441 \u043d\u0430 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0438 \u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\u00bb. \u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d: \"\u0412\u0435\u0434\u043e\u043c\u043e\u0441\u0442\u0438 \u0413\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0421\u043e\u0432\u0435\u0442\u0430 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\u0430\", \u211612 (III \u0447\u0430\u0441\u0442\u044c), \u0441\u0442. 1926, 2012. (State Council of the Republic of Tatarstan. Resolution #2622-IV-GS of December 24, 2012 On Establishing an Inhabited Locality\u2014the Settlement of Innopolis\u2014on the Territory of Verkhneuslonsky District of the Republic of Tatarstan. ).\n\u0413\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0421\u043e\u0432\u0435\u0442 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d. \u0417\u0430\u043a\u043e\u043d \u2116115-\u0417\u0420\u0422 \u043e\u0442 13 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2014 \u0433. \u00ab\u041e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u0441\u0451\u043b\u043a\u0430 \u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441 \u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0412\u0432\u0435\u0434\u0435\u043d\u0441\u043a\u043e-\u0421\u043b\u043e\u0431\u043e\u0434\u0441\u043a\u043e\u0433\u043e \u0441\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0441\u0435\u043b\u0435\u043d\u0438\u044f \u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0417\u0430\u043a\u043e\u043d \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d \"\u041e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \"\u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u0438\u0439 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0439\u043e\u043d\" \u0438 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0432 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0435\"\u00bb. \u0412\u0441\u0442\u0443\u043f\u0438\u043b \u0432 \u0441\u0438\u043b\u0443 \u0441\u043e \u0434\u043d\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0438\u044f. \u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d: \"\u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\", \u2116183, 16 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2014 \u0433. (State Council of the Republic of Tatarstan. Law #115-ZRT of December 13, 2014 On the Transformation of the Settlement of Innopolis in Verkhneuslonsky District, on Changing the Borders of Several Municipal Formations, and on Transforming Vvedensko-Slobodskoye Rural Settlement in Verkhneuslonsky Municipal District, as well as Amending the Law of the Republic of Tatarstan \"On Establishing the Borders of the Territories and the Status of the Municipal Formation of \"Verkhneuslonsky Municipal District\" and of the Municipal Formations It Comprises\". Effective as of the day of the official publication.).","thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/thumb/5/55/%D0%98%D0%BD%D0%BD%D0%BE%D0%BF%D0%BE%D0%BB%D0%B8%D1%81._%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BF%D0%B0%D1%80%D0%BA_%D0%B8%D0%BC._%D0%90.%D0%A1._%D0%9F%D0%BE%D0%BF%D0%BE%D0%B2%D0%B0.JPG/200px-%D0%98%D0%BD%D0%BD%D0%BE%D0%BF%D0%BE%D0%BB%D0%B8%D1%81._%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BF%D0%B0%D1%80%D0%BA_%D0%B8%D0%BC._%D0%90.%D0%A1._%D0%9F%D0%BE%D0%BF%D0%BE%D0%B2%D0%B0.JPG","width":200,"height":133},"pageimage":"\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441._\u0422\u0435\u0445\u043d\u043e\u043f\u0430\u0440\u043a_\u0438\u043c._\u0410.\u0421._\u041f\u043e\u043f\u043e\u0432\u0430.JPG","langlinks":[{"lang":"ba","*":"\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441"},{"lang":"bg","*":"\u0418\u043d\u043e\u043f\u043e\u043b\u0438\u0441"},{"lang":"he","*":"\u05d0\u05d9\u05e0\u05d5\u05e4\u05d5\u05dc\u05d9\u05e1"},{"lang":"hsb","*":"Innopolis"},{"lang":"lb","*":"Innopolis"},{"lang":"ru","*":"\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441"},{"lang":"tt","*":"\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441"},{"lang":"wo","*":"Innopolis"}]}}}}
@@ -90,6 +90,30 @@ describe Wikipedia::Client, '.find page with one section (mocked)' do
90
90
  end
91
91
  end
92
92
 
93
+ describe Wikipedia::Client, '.find page with special characters in title' do
94
+ before(:each) do
95
+ @client = Wikipedia::Client.new
96
+ end
97
+
98
+ it 'should properly escape all special characters' do
99
+ @page = @client.find('A +&%=?:/ B')
100
+ expect(@page.title).to eq('A +&%=?:/ B')
101
+ expect(@page.fullurl).to eq('https://en.wikipedia.org/wiki/A_%2B%26%25%3D%3F:/_B')
102
+ end
103
+
104
+ it 'should handle pluses in article titles' do
105
+ @page = @client.find('C++')
106
+ expect(@page.title).to eq('C++')
107
+ expect(@page.fullurl).to eq('https://en.wikipedia.org/wiki/C%2B%2B')
108
+ end
109
+
110
+ it 'should handle slashes in article titles' do
111
+ @page = @client.find('PL/SQL')
112
+ expect(@page.title).to eq('PL/SQL')
113
+ expect(@page.fullurl).to eq('https://en.wikipedia.org/wiki/PL/SQL')
114
+ end
115
+ end
116
+
93
117
  describe Wikipedia::Client, '.find image (mocked)' do
94
118
  before(:each) do
95
119
  @client = Wikipedia::Client.new
@@ -137,19 +161,44 @@ describe Wikipedia::Client, '.find page (Edsger_Dijkstra)' do
137
161
  @client.follow_redirects = true
138
162
  @page = @client.find('Edsger Dijkstra')
139
163
  [
140
- '/en/4/4a/Commons-logo.svg',
141
- '/en/4/48/Folder_Hexagonal_Icon.svg',
142
164
  '/commons/5/57/Dijkstra_Animation.gif',
143
165
  '/commons/c/c9/Edsger_Dijkstra_1994.jpg',
144
166
  '/commons/d/d9/Edsger_Wybe_Dijkstra.jpg',
145
- '/commons/0/00/Complex-adaptive-system.jpg',
146
- '/en/4/4d/Centrum-wiskunde-informatica-logo.png',
147
- '/commons/7/7b/An_illustration_of_the_dining_philosophers_problem.png',
148
- '/commons/3/37/Detail_of_a_1Kb_ferrite_core_RAM-module_of_an_1960s_Electrologica_X1_computer.jpg'
149
167
  ].each do |image|
150
168
  expect(@page.image_urls).to include('https://upload.wikimedia.org/wikipedia' + image)
151
169
  end
152
170
  end
171
+
172
+ it 'should collect the image thumbnail urls with default width' do
173
+ @client.follow_redirects = true
174
+ @page = @client.find('Edsger Dijkstra')
175
+ [
176
+ '/commons/thumb/5/57/Dijkstra_Animation.gif/200px-Dijkstra_Animation.gif',
177
+ '/commons/thumb/c/c9/Edsger_Dijkstra_1994.jpg/200px-Edsger_Dijkstra_1994.jpg',
178
+ '/commons/thumb/d/d9/Edsger_Wybe_Dijkstra.jpg/200px-Edsger_Wybe_Dijkstra.jpg',
179
+ ].each do |image|
180
+ expect(@page.image_thumburls).to include('https://upload.wikimedia.org/wikipedia' + image)
181
+ end
182
+ end
183
+
184
+ it 'should collect the image thumbnail urls with specified width' do
185
+ @client.follow_redirects = true
186
+ @page = @client.find('Edsger Dijkstra')
187
+ [
188
+ '/commons/thumb/5/57/Dijkstra_Animation.gif/100px-Dijkstra_Animation.gif',
189
+ '/commons/thumb/c/c9/Edsger_Dijkstra_1994.jpg/100px-Edsger_Dijkstra_1994.jpg',
190
+ '/commons/thumb/d/d9/Edsger_Wybe_Dijkstra.jpg/100px-Edsger_Wybe_Dijkstra.jpg',
191
+ ].each do |image|
192
+ expect(@page.image_thumburls(100)).to include('https://upload.wikimedia.org/wikipedia' + image)
193
+ end
194
+ end
195
+
196
+ it 'should collect the main image thumburl' do
197
+ @client.follow_redirects = true
198
+ @page = @client.find('Edsger Dijkstra')
199
+ image = '/commons/thumb/d/d9/Edsger_Wybe_Dijkstra.jpg/150px-Edsger_Wybe_Dijkstra.jpg'
200
+ expect(@page.main_image_thumburl).to include('https://upload.wikimedia.org/wikipedia' + image)
201
+ end
153
202
  end
154
203
 
155
204
  describe Wikipedia::Client, '.find page (Rails) at jp' do
@@ -214,3 +263,25 @@ describe Wikipedia::Client, '.find page (mocked)' do
214
263
  expect(@page.image_urls).to eq(nil)
215
264
  end
216
265
  end
266
+
267
+ describe Wikipedia::Client, 'page.langlinks' do
268
+ before(:each) do
269
+ @client = Wikipedia::Client.new
270
+ @innopolis = File.read(File.dirname(__FILE__) + '/../fixtures/Innopolis.json')
271
+ expect(@client).to receive(:request).and_return(@innopolis)
272
+ end
273
+
274
+ it 'should contain langlinks' do
275
+ @page = @client.find('Innopolis')
276
+ expect(@page.langlinks).to include(
277
+ 'ba' => 'Иннополис',
278
+ 'bg' => 'Инополис',
279
+ 'he' => 'אינופוליס',
280
+ 'hsb' => 'Innopolis',
281
+ 'lb' => 'Innopolis',
282
+ 'ru' => 'Иннополис',
283
+ 'tt' => 'Иннополис',
284
+ 'wo' => 'Innopolis'
285
+ )
286
+ end
287
+ end
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.email = 'ken@kenpratt.net'
20
20
 
21
21
  s.homepage = 'http://github.com/kenpratt/wikipedia-client'
22
- s.rubygems_version = '1.8.23'
22
+ s.rubygems_version = '1.11.0'
23
23
  s.summary = 'Ruby client for the Wikipedia API'
24
24
  s.platform = Gem::Platform::RUBY
25
25
  s.files = `git ls-files`.split("\n")
@@ -32,10 +32,11 @@ Gem::Specification.new do |s|
32
32
  s.require_paths << 'lib'
33
33
  s.rdoc_options << '--title' << 'wikipedia-client' << '--main' << '-ri'
34
34
 
35
- s.add_development_dependency('rake', '~> 10.1')
35
+ s.add_development_dependency('pry')
36
+ s.add_development_dependency('rake', '~> 13.0')
36
37
  s.add_development_dependency('rspec', '~> 3.0')
37
- s.add_development_dependency('rdoc', '~> 4.0')
38
- s.add_development_dependency('jeweler', '~> 1.8')
38
+ s.add_development_dependency('rdoc', '~> 6.0')
39
+ s.add_development_dependency('jeweler', '~> 2.0')
39
40
  s.add_development_dependency('rubocop', '~> 0.48')
40
41
 
41
42
  if s.respond_to? :specification_version
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wikipedia-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.1
4
+ version: 1.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyril David
@@ -10,25 +10,39 @@ authors:
10
10
  - Aishwarya Subramanian
11
11
  - Pietro Menna
12
12
  - Sophie Rapoport
13
- autorequire:
13
+ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2017-10-06 00:00:00.000000000 Z
16
+ date: 2021-04-03 00:00:00.000000000 Z
17
17
  dependencies:
18
+ - !ruby/object:Gem::Dependency
19
+ name: pry
20
+ requirement: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: '0'
25
+ type: :development
26
+ prerelease: false
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
18
32
  - !ruby/object:Gem::Dependency
19
33
  name: rake
20
34
  requirement: !ruby/object:Gem::Requirement
21
35
  requirements:
22
36
  - - "~>"
23
37
  - !ruby/object:Gem::Version
24
- version: '10.1'
38
+ version: '13.0'
25
39
  type: :development
26
40
  prerelease: false
27
41
  version_requirements: !ruby/object:Gem::Requirement
28
42
  requirements:
29
43
  - - "~>"
30
44
  - !ruby/object:Gem::Version
31
- version: '10.1'
45
+ version: '13.0'
32
46
  - !ruby/object:Gem::Dependency
33
47
  name: rspec
34
48
  requirement: !ruby/object:Gem::Requirement
@@ -49,28 +63,28 @@ dependencies:
49
63
  requirements:
50
64
  - - "~>"
51
65
  - !ruby/object:Gem::Version
52
- version: '4.0'
66
+ version: '6.0'
53
67
  type: :development
54
68
  prerelease: false
55
69
  version_requirements: !ruby/object:Gem::Requirement
56
70
  requirements:
57
71
  - - "~>"
58
72
  - !ruby/object:Gem::Version
59
- version: '4.0'
73
+ version: '6.0'
60
74
  - !ruby/object:Gem::Dependency
61
75
  name: jeweler
62
76
  requirement: !ruby/object:Gem::Requirement
63
77
  requirements:
64
78
  - - "~>"
65
79
  - !ruby/object:Gem::Version
66
- version: '1.8'
80
+ version: '2.0'
67
81
  type: :development
68
82
  prerelease: false
69
83
  version_requirements: !ruby/object:Gem::Requirement
70
84
  requirements:
71
85
  - - "~>"
72
86
  - !ruby/object:Gem::Version
73
- version: '1.8'
87
+ version: '2.0'
74
88
  - !ruby/object:Gem::Dependency
75
89
  name: rubocop
76
90
  requirement: !ruby/object:Gem::Requirement
@@ -89,20 +103,20 @@ dependencies:
89
103
  name: thoughtbot-shoulda
90
104
  requirement: !ruby/object:Gem::Requirement
91
105
  requirements:
92
- - - "~>"
106
+ - - ">="
93
107
  - !ruby/object:Gem::Version
94
108
  version: '2.11'
95
- - - ">="
109
+ - - "~>"
96
110
  - !ruby/object:Gem::Version
97
111
  version: '2.11'
98
112
  type: :development
99
113
  prerelease: false
100
114
  version_requirements: !ruby/object:Gem::Requirement
101
115
  requirements:
102
- - - "~>"
116
+ - - ">="
103
117
  - !ruby/object:Gem::Version
104
118
  version: '2.11'
105
- - - ">="
119
+ - - "~>"
106
120
  - !ruby/object:Gem::Version
107
121
  version: '2.11'
108
122
  description: Ruby client for the Wikipedia API
@@ -135,6 +149,7 @@ files:
135
149
  - spec/fixtures/Edsger_Dijkstra_section_0.json
136
150
  - spec/fixtures/Edsger_content.txt
137
151
  - spec/fixtures/File_Edsger_Wybe_Dijkstra_jpg.json
152
+ - spec/fixtures/Innopolis.json
138
153
  - spec/fixtures/Sealand_Dynasty.json
139
154
  - spec/fixtures/sanitization_samples/Ceawlin_of_Wessex-raw.txt
140
155
  - spec/fixtures/sanitization_samples/Ceawlin_of_Wessex-sanitized.txt
@@ -174,7 +189,7 @@ homepage: http://github.com/kenpratt/wikipedia-client
174
189
  licenses:
175
190
  - MIT
176
191
  metadata: {}
177
- post_install_message:
192
+ post_install_message:
178
193
  rdoc_options:
179
194
  - "--title"
180
195
  - wikipedia-client
@@ -194,9 +209,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
194
209
  - !ruby/object:Gem::Version
195
210
  version: '0'
196
211
  requirements: []
197
- rubyforge_project:
198
- rubygems_version: 2.6.13
199
- signing_key:
212
+ rubygems_version: 3.0.3
213
+ signing_key:
200
214
  specification_version: 3
201
215
  summary: Ruby client for the Wikipedia API
202
216
  test_files:
@@ -205,6 +219,7 @@ test_files:
205
219
  - spec/fixtures/Edsger_Dijkstra_section_0.json
206
220
  - spec/fixtures/Edsger_content.txt
207
221
  - spec/fixtures/File_Edsger_Wybe_Dijkstra_jpg.json
222
+ - spec/fixtures/Innopolis.json
208
223
  - spec/fixtures/Sealand_Dynasty.json
209
224
  - spec/fixtures/sanitization_samples/Ceawlin_of_Wessex-raw.txt
210
225
  - spec/fixtures/sanitization_samples/Ceawlin_of_Wessex-sanitized.txt