Steven Fukase 4 лет назад
Родитель
Сommit
2cdf6fa9a3

+ 19 - 0
packages/app/src/server/models/editor-settings.js

@@ -0,0 +1,19 @@
+module.exports = function(crowi) {
+  const mongoose = require('mongoose');
+  const editorSettingsSchema = new mongoose.Schema({
+    userId: { type: String },
+    isTextlintEnabled: { type: Boolean, default: true },
+    commonTextlintRules: {
+      type: [
+        { name: { type: String }, options: { type: Object }, isEnabled: { type: Boolean } },
+      ],
+    },
+    japaneseTextlintRules: {
+      type: [
+        { name: { type: String }, options: { type: Object }, isEnabled: { type: Boolean } },
+      ],
+    },
+  });
+
+  return mongoose.model('EditorSettings', editorSettingsSchema);
+};

+ 0 - 4
packages/app/src/server/models/user.js

@@ -35,9 +35,6 @@ module.exports = function(crowi) {
     userEvent.on('activated', userEvent.onActivated);
   }
 
-  const editorCurrentSettingsSchema = new mongoose.Schema({
-    isTextlintEnabled: { type: Boolean, default: true },
-  });
 
   const userSchema = new mongoose.Schema({
     userId: String,
@@ -70,7 +67,6 @@ module.exports = function(crowi) {
     lastLoginAt: { type: Date },
     admin: { type: Boolean, default: 0, index: true },
     isInvitationEmailSended: { type: Boolean, default: false },
-    editorCurrentSettings: editorCurrentSettingsSchema,
   }, {
     toObject: {
       transform: (doc, ret, opt) => {

+ 34 - 21
packages/codemirror-textlint/src/index.ts

@@ -94,32 +94,45 @@ const createSetupRules = (rules, ruleOptions): TextlintKernelRule[] => (
 
 
 export const createValidator = (rulesConfigArray: RulesConfigObj[]): AsyncLinter<RulesConfigObj[]> => {
+  if (rulesConfigArray != null) {
+    const filteredConfigArray = rulesConfigArray
+      .filter((rule) => {
+        if (ruleModulesList[rule.name] == null) {
+          logger.error(`Textlint rule ${rule.name} is not installed`);
+        }
+        return ruleModulesList[rule.name] != null;
+      });
 
-  const filteredConfigArray = rulesConfigArray
-    .filter((rule) => {
-      if (ruleModulesList[rule.name] == null) {
-        logger.error(`Textlint rule ${rule.name} is not installed`);
-      }
-      return ruleModulesList[rule.name] != null;
-    });
+    const rules = filteredConfigArray
+      .reduce((rules, rule) => {
+        rules[rule.name] = ruleModulesList[rule.name];
+        return rules;
+      }, {});
 
-  const rules = filteredConfigArray
-    .reduce((rules, rule) => {
-      rules[rule.name] = ruleModulesList[rule.name];
-      return rules;
-    }, {});
+    const rulesOption = filteredConfigArray
+      .reduce((rules, rule) => {
+        rules[rule.name] = rule.options || {};
+        return rules;
+      }, {});
 
-  const rulesOption = filteredConfigArray
-    .reduce((rules, rule) => {
-      rules[rule.name] = rule.options || {};
-      return rules;
-    }, {});
+    Object.assign(
+      textlintOption,
+      { rules: createSetupRules(rules, rulesOption) },
+    );
+  }
 
-  Object.assign(
-    textlintOption,
-    { rules: createSetupRules(rules, rulesOption) },
-  );
+  const defaultSetupRules: TextlintKernelRule[] = Object.entries(ruleModulesList)
+    .map(ruleName => ({
+      ruleId: ruleName[0],
+      rule: ruleName[1],
+    }));
 
+  if (rulesConfigArray.length === 0) {
+    Object.assign(
+      textlintOption,
+      { rules: defaultSetupRules },
+    );
+  }
 
   return (text, callback) => {
     if (!text) {