Sha256: 6742cdaf1ed0352f83015025e3715c8fd7b59f6b3c9ba196071d84a44c29b251
Contents?: true
Size: 1.43 KB
Versions: 6
Compression:
Stored size: 1.43 KB
Contents
# frozen_string_literal: true # Fetch the HTML5 entities from w3.org and update the local cache. # @parameter force [Boolean] Whether to force regenerate the local cache. def fetch_entities(force: false) require 'json' require 'async' require 'async/http/internet' internet = Async::HTTP::Internet.new entites_json_path = self.entites_json_path if force || !File.exist?(entites_json_path) url = "https://www.w3.org/TR/html5/entities.json" Sync do File.write(entites_json_path, internet.get(url).read) end end return JSON.parse(File.read(entites_json_path)).delete_if{|string, _| !string.end_with? ';'} end # Consume the HTML5 entites and generate parsers to escape them. # @parameter wet [Boolean] Whether to write updated files. def update_entities(wet: false) require 'trenni/template' paths = { # 'ext/trenni/entities.rl' => 'ext/trenni/entities.trenni', 'lib/trenni/entities.rb' => 'lib/trenni/entities.trenni', } entities = self.fetch_entities paths.each do |output_path, template_path| template_path = File.expand_path(template_path, context.root) output_path = File.expand_path(output_path, context.root) template = Trenni::Template.load_file(template_path) output = template.to_string(entities) if wet File.write(output_path, output) else puts "*** #{output_path} ***" puts output end end end private def entites_json_path File.expand_path("entities.json", context.root) end
Version data entries
6 entries across 6 versions & 1 rubygems