|
1 | | -# frozen_string_literal: true |
2 | | - |
3 | | -# t.string :name |
4 | | -# t.timestamps |
5 | | -class DocFile < ApplicationRecord |
6 | | - has_many :doc_versions, dependent: :delete_all |
7 | | - has_many :versions, through: :doc_versions |
8 | | - |
9 | | - scope :with_includes, -> { includes(doc_versions: %i[doc version]) } |
10 | | - |
11 | | - @@true_lang = { |
12 | | - "de" => "Deutsch", |
13 | | - "en" => "English", |
14 | | - "es" => "Español", |
15 | | - "es_MX" => "Español (Mexico)", |
16 | | - "fr" => "Français", |
17 | | - "hu" => "magyar", |
18 | | - "id" => "Bahasa Indonesia", |
19 | | - "is" => "Íslenska", |
20 | | - "it" => "Italiano", |
21 | | - "ja" => "日本語", |
22 | | - "mr" => "मराठी", |
23 | | - "nb_NO" => "Norsk bokmål", |
24 | | - "nl" => "Nederlands", |
25 | | - "pl" => "Polski", |
26 | | - "pt_BR" => "Português (Brasil)", |
27 | | - "pt_PT" => "Português (Portugal)", |
28 | | - "ro" => "Română", |
29 | | - "ru" => "Русский", |
30 | | - "tr" => "Türkçe", |
31 | | - "uk" => "українська мова", |
32 | | - "zh_HANS-CN" => "简体中文", |
33 | | - "zh_HANT" => "繁體中文" |
34 | | - } |
35 | | - |
36 | | - def true_lang |
37 | | - @@true_lang |
38 | | - end |
39 | | - |
40 | | - def languages |
41 | | - doc_versions.select(:language).distinct.collect do |v| |
42 | | - [v[:language], @@true_lang[v[:language]] || v[:language]] |
43 | | - end |
44 | | - end |
45 | | - |
46 | | - def version_changes(limit_size = 100) |
47 | | - unchanged_versions = [] |
48 | | - changes = [] |
49 | | - doc_versions = self.doc_versions.includes(:version).version_changes.limit(limit_size).to_a |
50 | | - doc_versions.each_with_index do |doc_version, i| |
51 | | - previous_doc_version = doc_versions[i + 1] |
52 | | - next unless previous_doc_version |
53 | | - |
54 | | - sha2 = doc_version.doc.blob_sha |
55 | | - sha1 = previous_doc_version.doc.blob_sha |
56 | | - if sha1 == sha2 |
57 | | - unchanged_versions << doc_version.name |
58 | | - else |
59 | | - if !unchanged_versions.empty? |
60 | | - if unchanged_versions.size == 1 |
61 | | - changes << { name: "#{unchanged_versions.first} no changes", changed: false } |
62 | | - else |
63 | | - changes << { name: "#{unchanged_versions.last} → #{unchanged_versions.first} no changes", |
64 | | - changed: false } |
65 | | - end |
66 | | - unchanged_versions = [] |
67 | | - end |
68 | | - changes << { name: doc_version.name, time: doc_version.committed, diff: previous_doc_version.diff(doc_version), |
69 | | - changed: true } |
70 | | - end |
71 | | - end |
72 | | - changes |
73 | | - end |
74 | | - |
75 | | - # TODO: parse file for description |
76 | | - def description |
77 | | - "" |
78 | | - end |
79 | | -end |
| 1 | +de: "Deutsch" |
| 2 | +en: "English" |
| 3 | +es: "Español" |
| 4 | +es_MX: "Español (Mexico)" |
| 5 | +fr: "Français" |
| 6 | +hu: "magyar" |
| 7 | +id: "Bahasa Indonesia" |
| 8 | +is: "Íslenska" |
| 9 | +it: "Italiano" |
| 10 | +ja: "日本語" |
| 11 | +mr: "मराठी" |
| 12 | +nb_NO: "Norsk bokmål" |
| 13 | +nl: "Nederlands" |
| 14 | +pl: "Polski" |
| 15 | +pt_BR: "Português (Brasil)" |
| 16 | +pt_PT: "Português (Portugal)" |
| 17 | +ro: "Română" |
| 18 | +ru: "Русский" |
| 19 | +tr: "Türkçe" |
| 20 | +uk: "українська мова" |
| 21 | +zh_HANS-CN: "简体中文" |
| 22 | +zh_HANT: "繁體中文" |
0 commit comments