diff options
author | Patricia Arbona <arbonap@gmail.com> | 2017-09-07 12:41:08 -0700 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2017-09-07 13:52:35 -0700 |
commit | 3751ba9b2c6fba7c58f5ea74cc295cca2ecbda39 (patch) | |
tree | efad3ae1a63d939290b021c33e3d43ff9946f947 /spec/quality_es_spec.rb | |
parent | 41846a87fe82c95365aa587dfa528808cc15ec9e (diff) | |
download | bundler-3751ba9b2c6fba7c58f5ea74cc295cca2ecbda39.tar.gz |
Create quality spec for docs in Spanish
Diffstat (limited to 'spec/quality_es_spec.rb')
-rw-r--r-- | spec/quality_es_spec.rb | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/spec/quality_es_spec.rb b/spec/quality_es_spec.rb new file mode 100644 index 0000000000..20df9912a3 --- /dev/null +++ b/spec/quality_es_spec.rb @@ -0,0 +1,79 @@ +# encoding: utf-8 +# frozen_string_literal: true + +if defined?(Encoding) && Encoding.default_external.name != "UTF-8" + # An approximation of ruby -E UTF-8, since it works on 1.8.7 + Encoding.default_external = Encoding.find("UTF-8") +end + +RSpec.describe "La biblioteca si misma" do + def check_for_expendable_words(filename) + failing_line_message = [] + useless_words = %w[ + básicamente + claramente + sólo + solamente + obvio + obviamente + fácil + fácilmente + sencillamente + simplemente + ] + pattern = /\b#{Regexp.union(useless_words)}\b/i + + File.readlines(filename).each_with_index do |line, number| + next unless word_found = pattern.match(line) + failing_line_message << "#{filename}:#{number.succ} contiene '#{word_found}'. Esta palabra tiene un significado subjetivo y es mejor obviarla en textos técnicos." + end + + failing_line_message unless failing_line_message.empty? + end + + def check_for_specific_pronouns(filename) + failing_line_message = [] + specific_pronouns = /\b(él|ella|ellos|ellas)\b/i + + File.readlines(filename).each_with_index do |line, number| + next unless word_found = specific_pronouns.match(line) + failing_line_message << "#{filename}:#{number.succ} contiene '#{word_found}'. Use pronombres más genéricos en la documentación." + end + + failing_line_message unless failing_line_message.empty? + end + + RSpec::Matchers.define :be_well_formed do + match(&:empty?) + + failure_message do |actual| + actual.join("\n") + end + end + + it "mantiene la calidad de lenguaje de la documentación" do + included = /ronn/ + error_messages = [] + Dir.chdir(root) do + `git ls-files -z -- man`.split("\x0").each do |filename| + next unless filename =~ included + error_messages << check_for_expendable_words(filename) + error_messages << check_for_specific_pronouns(filename) + end + end + expect(error_messages.compact).to be_well_formed + end + + it "mantiene la calidad de lenguaje de oraciones usadas en el código fuente" do + error_messages = [] + exempt = /vendor/ + Dir.chdir(root) do + `git ls-files -z -- lib`.split("\x0").each do |filename| + next if filename =~ exempt + error_messages << check_for_expendable_words(filename) + error_messages << check_for_specific_pronouns(filename) + end + end + expect(error_messages.compact).to be_well_formed + end +end |