@valueerror/ltjs-lang-en 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +232 -0
- package/NOTICE +10 -0
- package/README.md +25 -2
- package/index.js +34 -0
- package/licenses/LGPL-2.1.txt +504 -0
- package/licenses/english-pos-dict.pom.xml +135 -0
- package/licenses/resource_en_12dicts-readme.html +738 -0
- package/licenses/resource_en_agid-readme.txt +340 -0
- package/licenses/resource_en_pos-readme.txt +115 -0
- package/package.json +60 -4
- package/resource-root.js +4 -0
- package/resources/META-INF/org/languagetool/language-module.properties +1 -0
- package/resources/en-chunker.bin +0 -0
- package/resources/en-pos-maxent.bin +0 -0
- package/resources/en-token.bin +0 -0
- package/resources/org/languagetool/resource/en/12dicts-readme.html +738 -0
- package/resources/org/languagetool/resource/en/added.txt +446 -0
- package/resources/org/languagetool/resource/en/added_custom.txt +4 -0
- package/resources/org/languagetool/resource/en/agid-readme.txt +340 -0
- package/resources/org/languagetool/resource/en/compounds.txt +9059 -0
- package/resources/org/languagetool/resource/en/confusion_sets.txt +871 -0
- package/resources/org/languagetool/resource/en/disambiguation.xml +17238 -0
- package/resources/org/languagetool/resource/en/do-not-synthesize.txt +13 -0
- package/resources/org/languagetool/resource/en/en-US-GB.txt +4804 -0
- package/resources/org/languagetool/resource/en/en.sor +211 -0
- package/resources/org/languagetool/resource/en/english.dict +0 -0
- package/resources/org/languagetool/resource/en/english.info +8 -0
- package/resources/org/languagetool/resource/en/english_synth.dict +0 -0
- package/resources/org/languagetool/resource/en/english_synth.info +7 -0
- package/resources/org/languagetool/resource/en/english_tags.txt +88 -0
- package/resources/org/languagetool/resource/en/hunspell/en_AU.dict +0 -0
- package/resources/org/languagetool/resource/en/hunspell/en_AU.info +16 -0
- package/resources/org/languagetool/resource/en/hunspell/en_CA.dict +0 -0
- package/resources/org/languagetool/resource/en/hunspell/en_CA.info +13 -0
- package/resources/org/languagetool/resource/en/hunspell/en_GB.dict +0 -0
- package/resources/org/languagetool/resource/en/hunspell/en_GB.info +15 -0
- package/resources/org/languagetool/resource/en/hunspell/en_NZ.dict +0 -0
- package/resources/org/languagetool/resource/en/hunspell/en_NZ.info +18 -0
- package/resources/org/languagetool/resource/en/hunspell/en_US.dict +0 -0
- package/resources/org/languagetool/resource/en/hunspell/en_US.info +15 -0
- package/resources/org/languagetool/resource/en/hunspell/en_ZA.dict +0 -0
- package/resources/org/languagetool/resource/en/hunspell/en_ZA.info +16 -0
- package/resources/org/languagetool/resource/en/hunspell/ignore.txt +11070 -0
- package/resources/org/languagetool/resource/en/hunspell/prohibit.txt +383 -0
- package/resources/org/languagetool/resource/en/hunspell/prohibit_custom.txt +1 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling.txt +477 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling_custom.txt +1 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling_en-AU.txt +34 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling_en-CA.txt +28 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling_en-GB.txt +44 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling_en-NZ.txt +31 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling_en-US.txt +41 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling_en-ZA.txt +32 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling_merged.txt +0 -0
- package/resources/org/languagetool/resource/en/multiwords.txt +8210 -0
- package/resources/org/languagetool/resource/en/pos-readme.txt +115 -0
- package/resources/org/languagetool/resource/en/removed.txt +31 -0
- package/resources/org/languagetool/resource/en/removed_custom.txt +4 -0
- package/resources/org/languagetool/resource/en/specific_case.txt +5621 -0
- package/resources/org/languagetool/resource/en/word_definitions.txt +1510 -0
- package/resources/org/languagetool/rules/en/coherency.txt +2501 -0
- package/resources/org/languagetool/rules/en/contractions.txt +198 -0
- package/resources/org/languagetool/rules/en/det_a.txt +959 -0
- package/resources/org/languagetool/rules/en/det_an.txt +4080 -0
- package/resources/org/languagetool/rules/en/diacritics.txt +1415 -0
- package/resources/org/languagetool/rules/en/en-AU/grammar.xml +171 -0
- package/resources/org/languagetool/rules/en/en-CA/grammar.xml +197 -0
- package/resources/org/languagetool/rules/en/en-GB/grammar.xml +555 -0
- package/resources/org/languagetool/rules/en/en-GB/replace.txt +104 -0
- package/resources/org/languagetool/rules/en/en-GB/style.xml +302 -0
- package/resources/org/languagetool/rules/en/en-NZ/grammar.xml +171 -0
- package/resources/org/languagetool/rules/en/en-NZ/replace.txt +5 -0
- package/resources/org/languagetool/rules/en/en-US/grammar.xml +913 -0
- package/resources/org/languagetool/rules/en/en-US/replace.txt +74 -0
- package/resources/org/languagetool/rules/en/en-US/style.xml +524 -0
- package/resources/org/languagetool/rules/en/grammar-l2-de.xml +227 -0
- package/resources/org/languagetool/rules/en/grammar-l2-fr.xml +39 -0
- package/resources/org/languagetool/rules/en/grammar.xml +142537 -0
- package/resources/org/languagetool/rules/en/redundancies.txt +866 -0
- package/resources/org/languagetool/rules/en/remote-rule-filters.xml +3622 -0
- package/resources/org/languagetool/rules/en/replace.txt +221 -0
- package/resources/org/languagetool/rules/en/replace_custom.txt +7 -0
- package/resources/org/languagetool/rules/en/replace_profanity.txt +540 -0
- package/resources/org/languagetool/rules/en/style.xml +12556 -0
- package/resources/org/languagetool/rules/en/synonyms.txt +42 -0
- package/resources/org/languagetool/rules/en/wordiness.txt +1061 -0
- package/resources/org/languagetool/rules/en/wrongWordInContext.txt +14 -0
- package/src/lang/en/chunking/EnglishChunkFilter.js +108 -0
- package/src/lang/en/chunking/EnglishChunker.js +135 -0
- package/src/lang/en/language/AmericanEnglish.js +73 -0
- package/src/lang/en/language/AustralianEnglish.js +42 -0
- package/src/lang/en/language/BritishEnglish.js +91 -0
- package/src/lang/en/language/CanadianEnglish.js +70 -0
- package/src/lang/en/language/English.js +398 -0
- package/src/lang/en/language/NewZealandEnglish.js +44 -0
- package/src/lang/en/language/SouthAfricanEnglish.js +40 -0
- package/src/lang/en/language/id2prioBritishEnglish.js +6 -0
- package/src/lang/en/language/id2prioEnglish.js +333 -0
- package/src/lang/en/rules/AbstractEnglishSpellerRule.js +677 -0
- package/src/lang/en/rules/AbstractEnglishSpellerRuleData.js +778 -0
- package/src/lang/en/rules/AdvancedSynthesizerFilter.js +12 -0
- package/src/lang/en/rules/AdverbFilter.js +538 -0
- package/src/lang/en/rules/AmericanReplaceRule.js +57 -0
- package/src/lang/en/rules/AvsAnData.js +37 -0
- package/src/lang/en/rules/AvsAnRule.js +182 -0
- package/src/lang/en/rules/BritishReplaceRule.js +57 -0
- package/src/lang/en/rules/CompoundRule.js +150 -0
- package/src/lang/en/rules/ConsistentApostrophesRule.js +87 -0
- package/src/lang/en/rules/ContractionSpellingRule.js +64 -0
- package/src/lang/en/rules/DateCheckFilter.js +58 -0
- package/src/lang/en/rules/DateFilterHelper.js +51 -0
- package/src/lang/en/rules/EnglishConvertToSentenceCaseFilter.js +17 -0
- package/src/lang/en/rules/EnglishDashRule.js +42 -0
- package/src/lang/en/rules/EnglishDiacriticsRule.js +67 -0
- package/src/lang/en/rules/EnglishMultitokenSpeller.js +15 -0
- package/src/lang/en/rules/EnglishNumberInWordFilter.js +38 -0
- package/src/lang/en/rules/EnglishPartialPosTagFilter.js +29 -0
- package/src/lang/en/rules/EnglishPlainEnglishRule.js +67 -0
- package/src/lang/en/rules/EnglishRedundancyRule.js +67 -0
- package/src/lang/en/rules/EnglishRepeatedWordsRule.js +212 -0
- package/src/lang/en/rules/EnglishSpecificCaseRule.js +47 -0
- package/src/lang/en/rules/EnglishSuppressMisspelledSuggestionsFilter.js +12 -0
- package/src/lang/en/rules/EnglishUnpairedBracketsRule.js +25 -0
- package/src/lang/en/rules/EnglishUnpairedQuotesRule.js +41 -0
- package/src/lang/en/rules/EnglishWordRepeatBeginningRule.js +107 -0
- package/src/lang/en/rules/EnglishWordRepeatRule.js +126 -0
- package/src/lang/en/rules/EnglishWrongWordInContextRule.js +50 -0
- package/src/lang/en/rules/FindSuggestionsFilter.js +41 -0
- package/src/lang/en/rules/FutureDateFilter.js +25 -0
- package/src/lang/en/rules/LongSentenceRule.js +19 -0
- package/src/lang/en/rules/MorfologikAmericanSpellerRule.js +69 -0
- package/src/lang/en/rules/MorfologikAustralianSpellerRule.js +45 -0
- package/src/lang/en/rules/MorfologikBritishSpellerRule.js +47 -0
- package/src/lang/en/rules/MorfologikCanadianSpellerRule.js +45 -0
- package/src/lang/en/rules/MorfologikNewZealandSpellerRule.js +45 -0
- package/src/lang/en/rules/MorfologikSouthAfricanSpellerRule.js +45 -0
- package/src/lang/en/rules/NewYearDateFilter.js +25 -0
- package/src/lang/en/rules/NewZealandReplaceRule.js +56 -0
- package/src/lang/en/rules/NoDisambiguationEnglishPartialPosTagFilter.js +24 -0
- package/src/lang/en/rules/OrdinalSuffixFilter.js +33 -0
- package/src/lang/en/rules/SimpleReplaceProfanityRule.js +55 -0
- package/src/lang/en/rules/SimpleReplaceRule.js +46 -0
- package/src/lang/en/rules/StyleTooOftenUsedAdjectiveRule.js +58 -0
- package/src/lang/en/rules/StyleTooOftenUsedNounRule.js +58 -0
- package/src/lang/en/rules/StyleTooOftenUsedVerbRule.js +58 -0
- package/src/lang/en/rules/UnitConversionRule.js +47 -0
- package/src/lang/en/rules/UnitConversionRuleImperial.js +57 -0
- package/src/lang/en/rules/UnitConversionRuleUS.js +62 -0
- package/src/lang/en/rules/VariantInfo.js +23 -0
- package/src/lang/en/rules/WordCoherencyRule.js +40 -0
- package/src/lang/en/rules/YMDDateCheckFilter.js +25 -0
- package/src/lang/en/rules/YMDNewYearDateFilter.js +25 -0
- package/src/lang/en/rules/translation/BeoLingusTranslator.js +357 -0
- package/src/lang/en/rules/translation/Inflector.js +72 -0
- package/src/lang/en/synthesis/EnglishSynthesizer.js +109 -0
- package/src/lang/en/tagging/EnglishHybridDisambiguator.js +28 -0
- package/src/lang/en/tagging/EnglishTagger.js +78 -0
- package/src/lang/en/tokenizers/EnglishWordTokenizer.js +113 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// org.languagetool.rules.en.MorfologikSouthAfricanSpellerRule
|
|
2
|
+
import { AbstractEnglishSpellerRule } from './AbstractEnglishSpellerRule.js';
|
|
3
|
+
import { VariantInfo } from './VariantInfo.js';
|
|
4
|
+
import { registerComponent } from '@valueerror/ltjs-core/src/core/language/components.js';
|
|
5
|
+
import { toLowerCase } from '@valueerror/ltjs-core/src/lib/java/strings.js';
|
|
6
|
+
|
|
7
|
+
const RESOURCE_FILENAME = '/en/hunspell/en_ZA.dict';
|
|
8
|
+
const LANGUAGE_SPECIFIC_PLAIN_TEXT_DICT = 'en/hunspell/spelling_en-ZA.txt';
|
|
9
|
+
let US_ENGLISH = null; // Java: static final Map US_ENGLISH = loadWordlist("en/en-US-GB.txt", 0), initialised with the class
|
|
10
|
+
|
|
11
|
+
// Java: MorfologikSouthAfricanSpellerRule
|
|
12
|
+
export class MorfologikSouthAfricanSpellerRule extends AbstractEnglishSpellerRule {
|
|
13
|
+
static FQCN = 'org.languagetool.rules.en.MorfologikSouthAfricanSpellerRule';
|
|
14
|
+
|
|
15
|
+
// Java: MorfologikSouthAfricanSpellerRule(ResourceBundle,Language,UserConfig,List) / (ResourceBundle,Language,GlobalConfig,UserConfig,List,LanguageModel,Language)
|
|
16
|
+
constructor(messages, language, ...rest) {
|
|
17
|
+
if (US_ENGLISH === null) US_ENGLISH = AbstractEnglishSpellerRule.loadWordlist('en/en-US-GB.txt', 0);
|
|
18
|
+
super(messages, language, ...rest);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Java: MorfologikSouthAfricanSpellerRule#isValidInOtherVariant(String)
|
|
22
|
+
isValidInOtherVariant(word) {
|
|
23
|
+
const otherVariant = US_ENGLISH.get(toLowerCase(word));
|
|
24
|
+
if (otherVariant !== undefined) {
|
|
25
|
+
return new VariantInfo('American English', otherVariant);
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Java: MorfologikSouthAfricanSpellerRule#getFileName()
|
|
31
|
+
getFileName() {
|
|
32
|
+
return RESOURCE_FILENAME;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Java: MorfologikSouthAfricanSpellerRule#getId()
|
|
36
|
+
getId() {
|
|
37
|
+
return 'MORFOLOGIK_RULE_EN_ZA';
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Java: MorfologikSouthAfricanSpellerRule#getLanguageVariantSpellingFileName()
|
|
41
|
+
getLanguageVariantSpellingFileName() {
|
|
42
|
+
return LANGUAGE_SPECIFIC_PLAIN_TEXT_DICT;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
registerComponent(MorfologikSouthAfricanSpellerRule.FQCN, (...args) => new MorfologikSouthAfricanSpellerRule(...args));
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// org.languagetool.rules.en.NewYearDateFilter
|
|
2
|
+
import { registerClass } from '@valueerror/ltjs-core/src/core/resources/ClassBroker.js';
|
|
3
|
+
import { AbstractNewYearDateFilter } from '@valueerror/ltjs-core/src/core/rules/AbstractNewYearDateFilter.js';
|
|
4
|
+
import { DateFilterHelper } from './DateFilterHelper.js';
|
|
5
|
+
|
|
6
|
+
// Java: NewYearDateFilter
|
|
7
|
+
export class NewYearDateFilter extends AbstractNewYearDateFilter {
|
|
8
|
+
static FQCN = 'org.languagetool.rules.en.NewYearDateFilter';
|
|
9
|
+
static JAVA_ABSTRACT = false;
|
|
10
|
+
static JAVA_CONSTRUCTORS = [{ params: [], text: 'public org.languagetool.rules.en.NewYearDateFilter()' }];
|
|
11
|
+
|
|
12
|
+
dateFilterHelper = new DateFilterHelper();
|
|
13
|
+
|
|
14
|
+
// Java: NewYearDateFilter#getMonth(String)
|
|
15
|
+
getMonth(localizedMonth) {
|
|
16
|
+
return this.dateFilterHelper.getMonth(localizedMonth);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Java: NewYearDateFilter#getCalendar()
|
|
20
|
+
getCalendar() {
|
|
21
|
+
return this.dateFilterHelper.getCalendar();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
registerClass(NewYearDateFilter.FQCN, NewYearDateFilter);
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// org.languagetool.rules.en.NewZealandReplaceRule
|
|
2
|
+
import { AbstractSimpleReplaceRule2 } from '@valueerror/ltjs-core/src/core/rules/AbstractSimpleReplaceRule2.js';
|
|
3
|
+
import { Categories } from '@valueerror/ltjs-core/src/core/rules/model/Category.js';
|
|
4
|
+
import { ITSIssueType } from '@valueerror/ltjs-core/src/core/rules/model/ITSIssueType.js';
|
|
5
|
+
import { Example } from '@valueerror/ltjs-core/src/core/rules/model/Examples.js';
|
|
6
|
+
import { Objects } from '@valueerror/ltjs-core/src/lib/java/Objects.js';
|
|
7
|
+
import { Locale } from '@valueerror/ltjs-core/src/lib/java/Locale.js';
|
|
8
|
+
import { NewZealandEnglish } from '../language/NewZealandEnglish.js';
|
|
9
|
+
|
|
10
|
+
const EN_NZ_LOCALE = new Locale('en-NZ');
|
|
11
|
+
|
|
12
|
+
// Java: NewZealandReplaceRule
|
|
13
|
+
export class NewZealandReplaceRule extends AbstractSimpleReplaceRule2 {
|
|
14
|
+
static FQCN = 'org.languagetool.rules.en.NewZealandReplaceRule';
|
|
15
|
+
static NEW_ZEALAND_SIMPLE_REPLACE_RULE = 'EN_NZ_SIMPLE_REPLACE';
|
|
16
|
+
|
|
17
|
+
// Java: NewZealandReplaceRule#getFileNames()
|
|
18
|
+
getFileNames() {
|
|
19
|
+
return [this.path];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Java: NewZealandReplaceRule(ResourceBundle,String)
|
|
23
|
+
constructor(messages, path) {
|
|
24
|
+
super(messages, new NewZealandEnglish());
|
|
25
|
+
this.path = Objects.requireNonNull(path);
|
|
26
|
+
this.setCategory(Categories.STYLE.getCategory(messages));
|
|
27
|
+
this.setLocQualityIssueType(ITSIssueType.LocaleViolation);
|
|
28
|
+
this.addExamplePair(Example.wrong('A <marker>sidewalk</marker> is a path along the side of a road.'),
|
|
29
|
+
Example.fixed('A <marker>footpath</marker> is a path along the side of a road.'));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Java: NewZealandReplaceRule#getId()
|
|
33
|
+
getId() {
|
|
34
|
+
return NewZealandReplaceRule.NEW_ZEALAND_SIMPLE_REPLACE_RULE;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Java: NewZealandReplaceRule#getDescription()
|
|
38
|
+
getDescription() {
|
|
39
|
+
return 'English words easily confused in New Zealand English';
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Java: NewZealandReplaceRule#getShort()
|
|
43
|
+
getShort() {
|
|
44
|
+
return 'Not a New Zealand English word';
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Java: NewZealandReplaceRule#getMessage()
|
|
48
|
+
getMessage() {
|
|
49
|
+
return "'$match' is a non-standard expression. Consider using expressions more common to New Zealand English.";
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Java: NewZealandReplaceRule#getLocale()
|
|
53
|
+
getLocale() {
|
|
54
|
+
return EN_NZ_LOCALE;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// org.languagetool.rules.en.NoDisambiguationEnglishPartialPosTagFilter (pulled forward from F49 for the English disambiguation.xml)
|
|
2
|
+
import { Languages } from '@valueerror/ltjs-core/src/core/Languages.js';
|
|
3
|
+
import { registerClass } from '@valueerror/ltjs-core/src/core/resources/ClassBroker.js';
|
|
4
|
+
import { PartialPosTagFilter } from '@valueerror/ltjs-core/src/core/rules/PartialPosTagFilter.js';
|
|
5
|
+
|
|
6
|
+
// Java: NoDisambiguationEnglishPartialPosTagFilter
|
|
7
|
+
export class NoDisambiguationEnglishPartialPosTagFilter extends PartialPosTagFilter {
|
|
8
|
+
static FQCN = 'org.languagetool.rules.en.NoDisambiguationEnglishPartialPosTagFilter';
|
|
9
|
+
static JAVA_ABSTRACT = false;
|
|
10
|
+
static JAVA_CONSTRUCTORS = [{ params: [], text: 'public org.languagetool.rules.en.NoDisambiguationEnglishPartialPosTagFilter()' }];
|
|
11
|
+
|
|
12
|
+
// Java: NoDisambiguationEnglishPartialPosTagFilter field initializer (tagger of "en")
|
|
13
|
+
constructor() {
|
|
14
|
+
super();
|
|
15
|
+
this.tagger = Languages.getLanguageForShortCode('en').getTagger();
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Java: NoDisambiguationEnglishPartialPosTagFilter#tag(String)
|
|
19
|
+
tag(token) {
|
|
20
|
+
return [...this.tagger.tag([token])];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
registerClass(NoDisambiguationEnglishPartialPosTagFilter.FQCN, NoDisambiguationEnglishPartialPosTagFilter);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// org.languagetool.rules.en.OrdinalSuffixFilter
|
|
2
|
+
import { registerClass } from '@valueerror/ltjs-core/src/core/resources/ClassBroker.js';
|
|
3
|
+
import { Pattern } from '@valueerror/ltjs-core/src/lib/java/regex/index.js';
|
|
4
|
+
import { listGet } from '@valueerror/ltjs-core/src/lib/java/arrays.js';
|
|
5
|
+
import { RuleFilter } from '@valueerror/ltjs-core/src/core/patterns/RuleFilter.js';
|
|
6
|
+
|
|
7
|
+
// Java: OrdinalSuffixFilter
|
|
8
|
+
export class OrdinalSuffixFilter extends RuleFilter {
|
|
9
|
+
static FQCN = 'org.languagetool.rules.en.OrdinalSuffixFilter';
|
|
10
|
+
static JAVA_ABSTRACT = false;
|
|
11
|
+
static JAVA_CONSTRUCTORS = [{ params: [], text: 'public org.languagetool.rules.en.OrdinalSuffixFilter()' }];
|
|
12
|
+
static PATTERN = Pattern.compile('.*(11|12|13)');
|
|
13
|
+
static NON_DIGITS = Pattern.compile('[^0-9]');
|
|
14
|
+
|
|
15
|
+
// Java: OrdinalSuffixFilter#acceptRuleMatch(RuleMatch,Map,int,AnalyzedTokenReadings[],List)
|
|
16
|
+
acceptRuleMatch(match) {
|
|
17
|
+
const ordinal = OrdinalSuffixFilter.NON_DIGITS.matcher(listGet(match.getSuggestedReplacements(), 0)).replaceAll('');
|
|
18
|
+
if (OrdinalSuffixFilter.PATTERN.matcher(ordinal).matches()) {
|
|
19
|
+
match.setSuggestedReplacement(ordinal + 'th');
|
|
20
|
+
} else if (ordinal.endsWith('1')) {
|
|
21
|
+
match.setSuggestedReplacement(ordinal + 'st');
|
|
22
|
+
} else if (ordinal.endsWith('2')) {
|
|
23
|
+
match.setSuggestedReplacement(ordinal + 'nd');
|
|
24
|
+
} else if (ordinal.endsWith('3')) {
|
|
25
|
+
match.setSuggestedReplacement(ordinal + 'rd');
|
|
26
|
+
} else {
|
|
27
|
+
match.setSuggestedReplacement(ordinal + 'th');
|
|
28
|
+
}
|
|
29
|
+
return match;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
registerClass(OrdinalSuffixFilter.FQCN, OrdinalSuffixFilter);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// org.languagetool.rules.en.SimpleReplaceProfanityRule
|
|
2
|
+
import { AbstractSimpleReplaceRule2 } from '@valueerror/ltjs-core/src/core/rules/AbstractSimpleReplaceRule2.js';
|
|
3
|
+
import { Categories } from '@valueerror/ltjs-core/src/core/rules/model/Category.js';
|
|
4
|
+
import { ITSIssueType } from '@valueerror/ltjs-core/src/core/rules/model/ITSIssueType.js';
|
|
5
|
+
import { Tag } from '@valueerror/ltjs-core/src/core/rules/model/Tag.js';
|
|
6
|
+
import { Locale } from '@valueerror/ltjs-core/src/lib/java/Locale.js';
|
|
7
|
+
import { getUrl } from '@valueerror/ltjs-core/src/core/Tools.js';
|
|
8
|
+
|
|
9
|
+
const EN_LOCALE = new Locale('EN');
|
|
10
|
+
|
|
11
|
+
// Java: SimpleReplaceProfanityRule
|
|
12
|
+
export class SimpleReplaceProfanityRule extends AbstractSimpleReplaceRule2 {
|
|
13
|
+
static FQCN = 'org.languagetool.rules.en.SimpleReplaceProfanityRule';
|
|
14
|
+
|
|
15
|
+
// Java: SimpleReplaceProfanityRule(ResourceBundle,Language)
|
|
16
|
+
constructor(messages, language) {
|
|
17
|
+
super(messages, language);
|
|
18
|
+
// useSubRuleSpecificIds();
|
|
19
|
+
this.setLocQualityIssueType(ITSIssueType.Style); // needs ITS issue to be 'Style' in order to get purple underline + lower prio
|
|
20
|
+
this.setCategory(Categories.STYLE.getCategory(messages));
|
|
21
|
+
this.setUrl(getUrl('https://en.wiktionary.org/wiki/Category:English_offensive_terms'));
|
|
22
|
+
this.setTags([Tag.picky]);
|
|
23
|
+
this.setRuleHasSuggestions(false);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Java: SimpleReplaceProfanityRule#getFileNames()
|
|
27
|
+
getFileNames() {
|
|
28
|
+
return ['/en/replace_profanity.txt'];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Java: SimpleReplaceProfanityRule#getId()
|
|
32
|
+
getId() {
|
|
33
|
+
return 'PROFANITY';
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Java: SimpleReplaceProfanityRule#getDescription()
|
|
37
|
+
getDescription() {
|
|
38
|
+
return 'Profanity';
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Java: SimpleReplaceProfanityRule#getShort()
|
|
42
|
+
getShort() {
|
|
43
|
+
return 'Profanity';
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Java: SimpleReplaceProfanityRule#getMessage()
|
|
47
|
+
getMessage() {
|
|
48
|
+
return 'This expression can be considered offensive.';
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Java: SimpleReplaceProfanityRule#getLocale()
|
|
52
|
+
getLocale() {
|
|
53
|
+
return EN_LOCALE;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// org.languagetool.rules.en.SimpleReplaceRule
|
|
2
|
+
import { AbstractSimpleReplaceRule2 } from '@valueerror/ltjs-core/src/core/rules/AbstractSimpleReplaceRule2.js';
|
|
3
|
+
import { Locale } from '@valueerror/ltjs-core/src/lib/java/Locale.js';
|
|
4
|
+
|
|
5
|
+
const EN_LOCALE = new Locale('EN');
|
|
6
|
+
|
|
7
|
+
// Java: SimpleReplaceRule (en)
|
|
8
|
+
export class SimpleReplaceRule extends AbstractSimpleReplaceRule2 {
|
|
9
|
+
static FQCN = 'org.languagetool.rules.en.SimpleReplaceRule';
|
|
10
|
+
|
|
11
|
+
// Java: SimpleReplaceRule(ResourceBundle,Language)
|
|
12
|
+
constructor(messages, language) {
|
|
13
|
+
super(messages, language);
|
|
14
|
+
this.useSubRuleSpecificIds();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Java: SimpleReplaceRule#getFileNames()
|
|
18
|
+
getFileNames() {
|
|
19
|
+
return ['/en/replace.txt', '/en/replace_custom.txt'];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Java: SimpleReplaceRule#getId()
|
|
23
|
+
getId() {
|
|
24
|
+
return 'EN_SIMPLE_REPLACE';
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Java: SimpleReplaceRule#getDescription()
|
|
28
|
+
getDescription() {
|
|
29
|
+
return 'Check for wrong words/phrases: $match';
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Java: SimpleReplaceRule#getShort()
|
|
33
|
+
getShort() {
|
|
34
|
+
return 'Wrong word';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Java: SimpleReplaceRule#getMessage()
|
|
38
|
+
getMessage() {
|
|
39
|
+
return 'Did you mean $suggestions?';
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Java: SimpleReplaceRule#getLocale()
|
|
43
|
+
getLocale() {
|
|
44
|
+
return EN_LOCALE;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// org.languagetool.rules.en.StyleTooOftenUsedAdjectiveRule
|
|
2
|
+
import { AbstractStyleTooOftenUsedWordRule } from '@valueerror/ltjs-core/src/core/rules/AbstractStyleTooOftenUsedWordRule.js';
|
|
3
|
+
|
|
4
|
+
const DEFAULT_MIN_PERCENT = 5;
|
|
5
|
+
|
|
6
|
+
// Java: StyleTooOftenUsedAdjectiveRule
|
|
7
|
+
export class StyleTooOftenUsedAdjectiveRule extends AbstractStyleTooOftenUsedWordRule {
|
|
8
|
+
static FQCN = 'org.languagetool.rules.en.StyleTooOftenUsedAdjectiveRule';
|
|
9
|
+
|
|
10
|
+
// Java: StyleTooOftenUsedAdjectiveRule(ResourceBundle,Language,UserConfig)
|
|
11
|
+
constructor(messages, lang, userConfig) {
|
|
12
|
+
super(messages, lang, userConfig, DEFAULT_MIN_PERCENT);
|
|
13
|
+
this.sentenceMessage = null;
|
|
14
|
+
if (userConfig !== null && userConfig !== undefined) {
|
|
15
|
+
const linguServices = userConfig.getLinguServices();
|
|
16
|
+
if (linguServices !== null && linguServices !== undefined) {
|
|
17
|
+
linguServices.setThesaurusRelevantRule(this);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Java: StyleTooOftenUsedAdjectiveRule#getLimitMessage(int)
|
|
23
|
+
getLimitMessage(limit) {
|
|
24
|
+
return 'The adjective is used more than ' + limit + '% times of all adjectives. '
|
|
25
|
+
+ 'It may be better to replace it with a synonym.';
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Java: StyleTooOftenUsedAdjectiveRule#getId()
|
|
29
|
+
getId() {
|
|
30
|
+
return 'TOO_OFTEN_USED_ADJECTIVE_EN';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Java: StyleTooOftenUsedAdjectiveRule#getDescription()
|
|
34
|
+
getDescription() {
|
|
35
|
+
return 'Statistical Style Analysis: Overused Adjective';
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Java: StyleTooOftenUsedAdjectiveRule#getConfigureText()
|
|
39
|
+
getConfigureText() {
|
|
40
|
+
return 'Show when a adjective is used more often than ...% of all adjectives:';
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Java: StyleTooOftenUsedAdjectiveRule#isToCountedWord(AnalyzedTokenReadings)
|
|
44
|
+
isToCountedWord(token) {
|
|
45
|
+
return token.hasPosTagStartingWith('JJ');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Java: StyleTooOftenUsedAdjectiveRule#isException(AnalyzedTokenReadings[],int)
|
|
49
|
+
isException(tokens, n) {
|
|
50
|
+
const token = tokens[n];
|
|
51
|
+
return token.hasPosTagStartingWith('RB') || token.hasPosTagStartingWith('IN') || token.hasPosTagStartingWith('CD') || token.hasPosTagStartingWith('DT') || token.hasPosTagStartingWith('NN');
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Java: StyleTooOftenUsedAdjectiveRule#toAddedLemma(AnalyzedTokenReadings)
|
|
55
|
+
toAddedLemma(token) {
|
|
56
|
+
return this.getLemmaForPosTagStartsWith('JJ', token);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// org.languagetool.rules.en.StyleTooOftenUsedNounRule
|
|
2
|
+
import { AbstractStyleTooOftenUsedWordRule } from '@valueerror/ltjs-core/src/core/rules/AbstractStyleTooOftenUsedWordRule.js';
|
|
3
|
+
|
|
4
|
+
const DEFAULT_MIN_PERCENT = 5;
|
|
5
|
+
|
|
6
|
+
// Java: StyleTooOftenUsedNounRule
|
|
7
|
+
export class StyleTooOftenUsedNounRule extends AbstractStyleTooOftenUsedWordRule {
|
|
8
|
+
static FQCN = 'org.languagetool.rules.en.StyleTooOftenUsedNounRule';
|
|
9
|
+
|
|
10
|
+
// Java: StyleTooOftenUsedNounRule(ResourceBundle,Language,UserConfig)
|
|
11
|
+
constructor(messages, lang, userConfig) {
|
|
12
|
+
super(messages, lang, userConfig, DEFAULT_MIN_PERCENT);
|
|
13
|
+
this.sentenceMessage = null;
|
|
14
|
+
if (userConfig !== null && userConfig !== undefined) {
|
|
15
|
+
const linguServices = userConfig.getLinguServices();
|
|
16
|
+
if (linguServices !== null && linguServices !== undefined) {
|
|
17
|
+
linguServices.setThesaurusRelevantRule(this);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Java: StyleTooOftenUsedNounRule#getLimitMessage(int)
|
|
23
|
+
getLimitMessage(limit) {
|
|
24
|
+
return 'The noun is used more than ' + limit + '% times of all nouns. '
|
|
25
|
+
+ 'It may be better to replace it with a synonym.';
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Java: StyleTooOftenUsedNounRule#getId()
|
|
29
|
+
getId() {
|
|
30
|
+
return 'TOO_OFTEN_USED_NOUN_EN';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Java: StyleTooOftenUsedNounRule#getDescription()
|
|
34
|
+
getDescription() {
|
|
35
|
+
return 'Statistical Style Analysis: Overused Noun';
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Java: StyleTooOftenUsedNounRule#getConfigureText()
|
|
39
|
+
getConfigureText() {
|
|
40
|
+
return 'Show when a noun is used more often than ...% of all nouns:';
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Java: StyleTooOftenUsedNounRule#isToCountedWord(AnalyzedTokenReadings)
|
|
44
|
+
isToCountedWord(token) {
|
|
45
|
+
return token.hasPosTagStartingWith('NN');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Java: StyleTooOftenUsedNounRule#isException(AnalyzedTokenReadings[],int)
|
|
49
|
+
isException(tokens, n) {
|
|
50
|
+
const token = tokens[n];
|
|
51
|
+
return token.hasPosTagStartingWith('NNP') || token.hasPosTagStartingWith('IN') || token.hasPosTagStartingWith('JJ') || token.hasPosTagStartingWith('RB') || token.hasPosTagStartingWith('VB');
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Java: StyleTooOftenUsedNounRule#toAddedLemma(AnalyzedTokenReadings)
|
|
55
|
+
toAddedLemma(token) {
|
|
56
|
+
return this.getLemmaForPosTagStartsWith('NN', token);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// org.languagetool.rules.en.StyleTooOftenUsedVerbRule
|
|
2
|
+
import { AbstractStyleTooOftenUsedWordRule } from '@valueerror/ltjs-core/src/core/rules/AbstractStyleTooOftenUsedWordRule.js';
|
|
3
|
+
|
|
4
|
+
const DEFAULT_MIN_PERCENT = 5;
|
|
5
|
+
|
|
6
|
+
// Java: StyleTooOftenUsedVerbRule
|
|
7
|
+
export class StyleTooOftenUsedVerbRule extends AbstractStyleTooOftenUsedWordRule {
|
|
8
|
+
static FQCN = 'org.languagetool.rules.en.StyleTooOftenUsedVerbRule';
|
|
9
|
+
|
|
10
|
+
// Java: StyleTooOftenUsedVerbRule(ResourceBundle,Language,UserConfig)
|
|
11
|
+
constructor(messages, lang, userConfig) {
|
|
12
|
+
super(messages, lang, userConfig, DEFAULT_MIN_PERCENT);
|
|
13
|
+
this.sentenceMessage = null;
|
|
14
|
+
if (userConfig !== null && userConfig !== undefined) {
|
|
15
|
+
const linguServices = userConfig.getLinguServices();
|
|
16
|
+
if (linguServices !== null && linguServices !== undefined) {
|
|
17
|
+
linguServices.setThesaurusRelevantRule(this);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Java: StyleTooOftenUsedVerbRule#getLimitMessage(int)
|
|
23
|
+
getLimitMessage(limit) {
|
|
24
|
+
return 'The verb is used more than ' + limit + '% times of all verbs. '
|
|
25
|
+
+ 'It may be better to replace it with a synonym.';
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Java: StyleTooOftenUsedVerbRule#getId()
|
|
29
|
+
getId() {
|
|
30
|
+
return 'TOO_OFTEN_USED_VERB_EN';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Java: StyleTooOftenUsedVerbRule#getDescription()
|
|
34
|
+
getDescription() {
|
|
35
|
+
return 'Statistical Style Analysis: Overused Verb';
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Java: StyleTooOftenUsedVerbRule#getConfigureText()
|
|
39
|
+
getConfigureText() {
|
|
40
|
+
return 'Show when a verb is used more often than ...% of all verbs:';
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Java: StyleTooOftenUsedVerbRule#isToCountedWord(AnalyzedTokenReadings)
|
|
44
|
+
isToCountedWord(token) {
|
|
45
|
+
return token.hasPosTagStartingWith('VB');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Java: StyleTooOftenUsedVerbRule#isException(AnalyzedTokenReadings[],int)
|
|
49
|
+
isException(tokens, n) {
|
|
50
|
+
const token = tokens[n];
|
|
51
|
+
return token.hasAnyLemma('be', 'have', 'do') || token.hasPosTagStartingWith('IN') || token.hasPosTagStartingWith('NN');
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Java: StyleTooOftenUsedVerbRule#toAddedLemma(AnalyzedTokenReadings)
|
|
55
|
+
toAddedLemma(token) {
|
|
56
|
+
return this.getLemmaForPosTagStartsWith('VB', token);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// org.languagetool.rules.en.UnitConversionRule
|
|
2
|
+
import { AbstractUnitConversionRule, MILE, FEET, YARD, INCH, POUND, OUNCE, FAHRENHEIT } from '@valueerror/ltjs-core/src/core/rules/AbstractUnitConversionRule.js';
|
|
3
|
+
import { Tag } from '@valueerror/ltjs-core/src/core/rules/model/Tag.js';
|
|
4
|
+
import { DecimalFormat } from '@valueerror/ltjs-core/src/lib/java/DecimalFormat.js';
|
|
5
|
+
import { Locale } from '@valueerror/ltjs-core/src/lib/java/Locale.js';
|
|
6
|
+
import { KILOGRAM, METRE, CELSIUS, HOUR } from '@valueerror/ltjs-core/src/lib/units/units.js';
|
|
7
|
+
|
|
8
|
+
// Java: UnitConversionRule
|
|
9
|
+
export class UnitConversionRule extends AbstractUnitConversionRule {
|
|
10
|
+
static FQCN = 'org.languagetool.rules.en.UnitConversionRule';
|
|
11
|
+
|
|
12
|
+
// Java: UnitConversionRule(ResourceBundle)
|
|
13
|
+
constructor(messages) {
|
|
14
|
+
super(messages);
|
|
15
|
+
this.setTags([Tag.picky]);
|
|
16
|
+
this.format = DecimalFormat.getNumberInstance(Locale.ENGLISH);
|
|
17
|
+
this.format.setMaximumFractionDigits(2);
|
|
18
|
+
this.format.setRoundingMode('HALF_UP');
|
|
19
|
+
this.addUnit("miles per hour", MILE.divideUnit(HOUR), "miles per hour", 1, false);
|
|
20
|
+
this.addUnit("kilograms?", KILOGRAM, "kilogram", 1e0, true);
|
|
21
|
+
this.addUnit("grams?", KILOGRAM, "gram", 1e-3, true);
|
|
22
|
+
this.addUnit("tons?", KILOGRAM, "ton", 1e3, true);
|
|
23
|
+
this.addUnit("pounds?", POUND, "pounds", 1, false);
|
|
24
|
+
this.addUnit("ounces?", OUNCE, "ounces", 1, false);
|
|
25
|
+
this.addUnit("feet", FEET, "feet", 1, false);
|
|
26
|
+
this.addUnit("miles?", MILE, "miles", 1, false);
|
|
27
|
+
this.addUnit("yards?", YARD, "yards", 1, false);
|
|
28
|
+
this.addUnit("inch(es)?", INCH, "inches", 1, false);
|
|
29
|
+
this.addUnit("(?:degrees?)? Fahrenheit", FAHRENHEIT, "degree Fahrenheit", 1, false);
|
|
30
|
+
this.addUnit("(?:degrees?)? Celsius", CELSIUS, "degree Celsius", 1, true);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Java: UnitConversionRule#getId()
|
|
34
|
+
getId() {
|
|
35
|
+
return 'METRIC_UNITS_EN_GENERAL';
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Java: UnitConversionRule#getDescription()
|
|
39
|
+
getDescription() {
|
|
40
|
+
return 'Suggests or checks conversion of units to their metric equivalents.';
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Java: UnitConversionRule#getNumberFormat()
|
|
44
|
+
getNumberFormat() {
|
|
45
|
+
return this.format;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// org.languagetool.rules.en.UnitConversionRuleImperial
|
|
2
|
+
import { UnitConversionRule } from './UnitConversionRule.js';
|
|
3
|
+
import { DecimalFormat } from '@valueerror/ltjs-core/src/lib/java/DecimalFormat.js';
|
|
4
|
+
import { Locale } from '@valueerror/ltjs-core/src/lib/java/Locale.js';
|
|
5
|
+
import { METRE, SQUARE_METRE, CUBIC_METRE, LITRE, KILOMETRE_PER_HOUR } from '@valueerror/ltjs-core/src/lib/units/units.js';
|
|
6
|
+
import { IMP_QUART, IMP_GALLON, IMP_PINT, IMP_FL_OUNCE } from '@valueerror/ltjs-core/src/core/rules/AbstractUnitConversionRule.js';
|
|
7
|
+
|
|
8
|
+
// Java: UnitConversionRuleImperial
|
|
9
|
+
export class UnitConversionRuleImperial extends UnitConversionRule {
|
|
10
|
+
static FQCN = 'org.languagetool.rules.en.UnitConversionRuleImperial';
|
|
11
|
+
|
|
12
|
+
// Java: UnitConversionRuleImperial(ResourceBundle)
|
|
13
|
+
constructor(messages) {
|
|
14
|
+
super(messages);
|
|
15
|
+
this.format = DecimalFormat.getNumberInstance(Locale.UK);
|
|
16
|
+
this.format.setMaximumFractionDigits(2);
|
|
17
|
+
this.format.setRoundingMode('HALF_UP');
|
|
18
|
+
|
|
19
|
+
this.addUnit("(kilometre|kilometer)s? per hour", KILOMETRE_PER_HOUR, "kilometres per hour", 1, true);
|
|
20
|
+
this.addUnit("kilomet(re|er)s?", METRE, "kilometres", 1e3, true);
|
|
21
|
+
this.addUnit("met(re|er)s?", METRE, "metres", 1e0, true);
|
|
22
|
+
this.addUnit("decimet(re|er)s?", METRE, "decimetres", 1e-1, false); // Metric, but not commonly used
|
|
23
|
+
this.addUnit("centimet(re|er)s?", METRE, "centimetres", 1e-2, true);
|
|
24
|
+
this.addUnit("millimet(re|er)s?", METRE, "micrometres", 1e-3, true);
|
|
25
|
+
this.addUnit("micromet(re|er)s?", METRE, "micrometres", 1e-6, true);
|
|
26
|
+
this.addUnit("nanomet(re|er)s?", METRE, "nanometres", 1e-9, true);
|
|
27
|
+
this.addUnit("square met(re|er)s?", SQUARE_METRE, "square metres", 1, true);
|
|
28
|
+
this.addUnit("square kilomet(re|er)s?", SQUARE_METRE, "square kilometres", 1e6, true);
|
|
29
|
+
this.addUnit("square decimet(re|er)s?", SQUARE_METRE, "square decimetres", 1e-2, false); // Metric, but not commonly used
|
|
30
|
+
this.addUnit("square centimet(re|er)s?", SQUARE_METRE, "square centimetres", 1e-4, true);
|
|
31
|
+
this.addUnit("square millimet(re|er)s?", SQUARE_METRE, "square millimetres", 1e-6, true);
|
|
32
|
+
this.addUnit("square micromet(re|er)s?", SQUARE_METRE, "square micrometres", 1e-12, true);
|
|
33
|
+
this.addUnit("square nanomet(re|er)s?", SQUARE_METRE, "square nanometres", 1e-18, true);
|
|
34
|
+
this.addUnit("cubic met(re|er)s?", CUBIC_METRE, "cubic metres", 1, true);
|
|
35
|
+
this.addUnit("cubic kilomet(re|er)s?", CUBIC_METRE, "cubic kilometres", 1e9, true);
|
|
36
|
+
this.addUnit("cubic decimet(re|er)s?", CUBIC_METRE, "cubic decimetres", 1e-3, false); // Metric, but not commonly used
|
|
37
|
+
this.addUnit("cubic centimet(re|er)s?", CUBIC_METRE, "cubic centimetres", 1e-6, true);
|
|
38
|
+
this.addUnit("cubic millimet(re|er)s?", CUBIC_METRE, "cubic millimetres", 1e-9, true);
|
|
39
|
+
this.addUnit("cubic micromet(re|er)s?", CUBIC_METRE, "cubic micrometres", 1e-18, true);
|
|
40
|
+
this.addUnit("cubic nanomet(re|er)s?", CUBIC_METRE, "cubic nanometres", 1e-27, true);
|
|
41
|
+
this.addUnit("lit(re|er)s?", LITRE, "litres", 1, true);
|
|
42
|
+
this.addUnit("millilit(re|er)s?", LITRE, "millilitres", 1e-3, true);
|
|
43
|
+
this.addUnit("qt\\.", IMP_QUART, "qt.", 1, false);
|
|
44
|
+
this.addUnit("gal", IMP_GALLON, "gal", 1, false);
|
|
45
|
+
this.addUnit("pt", IMP_PINT, "pt", 1, false);
|
|
46
|
+
this.addUnit("(?:fl.? oz.?|oz. fl.)", IMP_FL_OUNCE, "fl oz", 1, false);
|
|
47
|
+
this.addUnit("quarts?", IMP_QUART, "quarts", 1, false);
|
|
48
|
+
this.addUnit("gallons?", IMP_GALLON, "gallons", 1, false);
|
|
49
|
+
this.addUnit("pints?", IMP_PINT, "pints", 1, false);
|
|
50
|
+
this.addUnit("(fluid )?ounces?", IMP_FL_OUNCE, "fluid ounces", 1, false);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Java: UnitConversionRuleImperial#getId()
|
|
54
|
+
getId() {
|
|
55
|
+
return 'METRIC_UNITS_EN_IMPERIAL';
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// org.languagetool.rules.en.UnitConversionRuleUS
|
|
2
|
+
import { UnitConversionRule } from './UnitConversionRule.js';
|
|
3
|
+
import { getUrl } from '@valueerror/ltjs-core/src/core/Tools.js';
|
|
4
|
+
import { DecimalFormat } from '@valueerror/ltjs-core/src/lib/java/DecimalFormat.js';
|
|
5
|
+
import { Locale } from '@valueerror/ltjs-core/src/lib/java/Locale.js';
|
|
6
|
+
import { METRE, SQUARE_METRE, CUBIC_METRE, LITRE, KILOMETRE_PER_HOUR } from '@valueerror/ltjs-core/src/lib/units/units.js';
|
|
7
|
+
import { US_QUART, US_GALLON, US_PINT, US_CUP, US_FL_OUNCE } from '@valueerror/ltjs-core/src/core/rules/AbstractUnitConversionRule.js';
|
|
8
|
+
|
|
9
|
+
// Java: UnitConversionRuleUS
|
|
10
|
+
export class UnitConversionRuleUS extends UnitConversionRule {
|
|
11
|
+
static FQCN = 'org.languagetool.rules.en.UnitConversionRuleUS';
|
|
12
|
+
|
|
13
|
+
// Java: UnitConversionRuleUS(ResourceBundle)
|
|
14
|
+
constructor(messages) {
|
|
15
|
+
super(messages);
|
|
16
|
+
this.setUrl(getUrl('https://languagetool.org/insights/post/imperial-metric-system/'));
|
|
17
|
+
|
|
18
|
+
this.format = DecimalFormat.getNumberInstance(Locale.US);
|
|
19
|
+
this.format.setMaximumFractionDigits(2);
|
|
20
|
+
this.format.setRoundingMode('HALF_UP');
|
|
21
|
+
|
|
22
|
+
this.addUnit("(kilometre|kilometer)s? per hour", KILOMETRE_PER_HOUR, "kilometers per hour", 1, true);
|
|
23
|
+
this.addUnit("kilomet(re|er)s?", METRE, "kilometers", 1e3, true);
|
|
24
|
+
this.addUnit("met(re|er)s?", METRE, "meters", 1e0, true);
|
|
25
|
+
this.addUnit("decimet(re|er)s?", METRE, "decimeters", 1e-1, false); // Metric, but not commonly used
|
|
26
|
+
this.addUnit("centimet(re|er)s?", METRE, "centimeters", 1e-2, true);
|
|
27
|
+
this.addUnit("millimet(re|er)s?", METRE, "micrometers", 1e-3, true);
|
|
28
|
+
this.addUnit("micromet(re|er)s?", METRE, "micrometers", 1e-6, true);
|
|
29
|
+
this.addUnit("nanomet(re|er)s?", METRE, "nanometers", 1e-9, true);
|
|
30
|
+
this.addUnit("square met(re|er)s?", SQUARE_METRE, "square meters", 1, true);
|
|
31
|
+
this.addUnit("square kilomet(re|er)s?", SQUARE_METRE, "square kilometers", 1e6, true);
|
|
32
|
+
this.addUnit("square decimet(re|er)s?", SQUARE_METRE, "square decimeters", 1e-2, false); // Metric, but not commonly used
|
|
33
|
+
this.addUnit("square centimet(re|er)s?", SQUARE_METRE, "square centimeters", 1e-4, true);
|
|
34
|
+
this.addUnit("square millimet(re|er)s?", SQUARE_METRE, "square millimeters", 1e-6, true);
|
|
35
|
+
this.addUnit("square micromet(re|er)s?", SQUARE_METRE, "square micrometers", 1e-12, true);
|
|
36
|
+
this.addUnit("square nanomet(re|er)s?", SQUARE_METRE, "square nanometers", 1e-18, true);
|
|
37
|
+
this.addUnit("cubic met(re|er)s?", CUBIC_METRE, "cubic meters", 1, true);
|
|
38
|
+
this.addUnit("cubic kilomet(re|er)s?", CUBIC_METRE, "cubic kilometers", 1e9, true);
|
|
39
|
+
this.addUnit("cubic decimet(re|er)s?", CUBIC_METRE, "cubic decimeters", 1e-3, false); // Metric, but not commonly used
|
|
40
|
+
this.addUnit("cubic centimet(re|er)s?", CUBIC_METRE, "cubic centimeters", 1e-6, true);
|
|
41
|
+
this.addUnit("cubic millimet(re|er)s?", CUBIC_METRE, "cubic millimeters", 1e-9, true);
|
|
42
|
+
this.addUnit("cubic micromet(re|er)s?", CUBIC_METRE, "cubic micrometers", 1e-18, true);
|
|
43
|
+
this.addUnit("cubic nanomet(re|er)s?", CUBIC_METRE, "cubic nanometers", 1e-27, true);
|
|
44
|
+
this.addUnit("lit(re|er)s?", LITRE, "liters", 1, true);
|
|
45
|
+
this.addUnit("millilit(re|er)s?", LITRE, "milliliters", 1e-3, true);
|
|
46
|
+
this.addUnit("qt\\.", US_QUART, "qt.", 1, false);
|
|
47
|
+
this.addUnit("gal", US_GALLON, "gal", 1, false);
|
|
48
|
+
this.addUnit("pt", US_PINT, "pt", 1, false);
|
|
49
|
+
this.addUnit("cup", US_CUP, "cups", 1, false);
|
|
50
|
+
this.addUnit("(?:fl.? oz.?|oz. fl.)", US_FL_OUNCE, "fl oz", 1, false);
|
|
51
|
+
this.addUnit("quarts?", US_QUART, "quarts", 1, false);
|
|
52
|
+
this.addUnit("gallons?", US_GALLON, "gallons", 1, false);
|
|
53
|
+
this.addUnit("pints?", US_PINT, "pints", 1, false);
|
|
54
|
+
this.addUnit("cups?", US_CUP, "cups", 1, false);
|
|
55
|
+
this.addUnit("(fluid )?ounces?", US_FL_OUNCE, "fluid ounces", 1, false);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Java: UnitConversionRuleUS#getId()
|
|
59
|
+
getId() {
|
|
60
|
+
return 'METRIC_UNITS_EN_US';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// org.languagetool.rules.en.VariantInfo
|
|
2
|
+
import { Objects } from '@valueerror/ltjs-core/src/lib/java/Objects.js';
|
|
3
|
+
|
|
4
|
+
// Java: VariantInfo (package-private value object)
|
|
5
|
+
export class VariantInfo {
|
|
6
|
+
static FQCN = 'org.languagetool.rules.en.VariantInfo';
|
|
7
|
+
|
|
8
|
+
// Java: VariantInfo(String,String)
|
|
9
|
+
constructor(variantName, otherVariant) {
|
|
10
|
+
this.variantName = Objects.requireNonNull(variantName);
|
|
11
|
+
this.otherVariantValue = Objects.requireNonNull(otherVariant);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// Java: VariantInfo#getVariantName()
|
|
15
|
+
getVariantName() {
|
|
16
|
+
return this.variantName;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Java: VariantInfo#otherVariant()
|
|
20
|
+
otherVariant() {
|
|
21
|
+
return this.otherVariantValue;
|
|
22
|
+
}
|
|
23
|
+
}
|