Rakefile in telegram-bot-ruby-2.0.0 vs Rakefile in telegram-bot-ruby-2.1.0
- old
+ new
@@ -13,50 +13,5 @@
end
RSpec::Core::RakeTask.new(:spec)
task default: :spec
-
-desc 'Dump type definitions from docs to YAML'
-task :dump_type_attributes do
- require_relative 'lib/telegram/bot'
- require 'nokogiri'
- require 'open-uri'
- require 'yaml'
-
- # Preload every type we have
- Zeitwerk::Loader.eager_load_all
- types = Telegram::Bot::Types::Base.descendants.map { |c| c.name.split('::').last }
-
- # Fetch and parse docs
- doc = Nokogiri::HTML(URI.open('https://core.telegram.org/bots/api').read)
-
- next_type_element_names = %w[table h4]
-
- result = types.to_h do |type|
- # This is very hacky but working way to find table containing attributes for
- # given type. Basic idea is to find heading with type and then iterate until
- # we find table with attributes or next heading (because sometimes type
- # doesn't have any attributes).
- element = doc.at_xpath(%{//h4[text() = "#{type}"]})
- loop do
- element = element.next_element
- break if next_type_element_names.include?(element.name)
- end
-
- attributes = element.xpath('.//tbody//tr').map do |el|
- cells = el.children.select { |c| c.name == 'td' }
- {
- 'name' => cells[0].text,
- 'type' => cells[1].text,
- 'required' => !cells[2].text.start_with?('Optional.'),
- 'required_value' =>
- cells[2].text.match(/^.+, (?:must be (?<found_type>\w+)|always “(?<found_type>\w+)”)$/)&.[](:found_type)
- }.compact
- end
-
- [type, attributes]
- end
-
- # Write everything to fixture file
- File.write "#{__dir__}/spec/support/type_attributes.yml", result.to_yaml
-end