<commit_before>package com.jetbrains.edu.learning.intellij;

import com.intellij.lang.LanguageExtension;
import com.intellij.openapi.module.ModifiableModuleModel;
import com.intellij.openapi.project.Project;
import com.jetbrains.edu.learning.courseGeneration.StudyProjectGenerator;
import com.jetbrains.edu.learning.stepic.CourseInfo;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

@SuppressWarnings("unused") //used in other educational plugins that are stored in separate repository
public interface EduCourseConfigurator {
  String EP_NAME = "Edu.courseConfigurator";
  LanguageExtension<EduCourseConfigurator> INSTANCE = new LanguageExtension<>(EP_NAME);

  default void configureModule(@NotNull final Project project) {}

  default void createCourseFromCourseInfo(@NotNull ModifiableModuleModel moduleModel,
                                          @NotNull Project project,
                                          @NotNull StudyProjectGenerator generator,
                                          @NotNull CourseInfo selectedCourse,
                                          @Nullable String moduleDir) {}
}<commit_msg>extract module creation to EP<commit_after>package com.jetbrains.edu.learning.intellij;

import com.intellij.lang.LanguageExtension;
import com.intellij.openapi.module.ModifiableModuleModel;
import com.intellij.openapi.project.Project;
import com.jetbrains.edu.learning.courseFormat.Course;
import com.jetbrains.edu.learning.courseGeneration.StudyProjectGenerator;
import com.jetbrains.edu.learning.stepic.CourseInfo;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

@SuppressWarnings("unused") //used in other educational plugins that are stored in separate repository
public interface EduCourseConfigurator {
  String EP_NAME = "Edu.courseConfigurator";
  LanguageExtension<EduCourseConfigurator> INSTANCE = new LanguageExtension<>(EP_NAME);

  default void configureModule(@NotNull final Project project) {
  }

  default void createCourseFromCourseInfo(@NotNull ModifiableModuleModel moduleModel,
                                          @NotNull Project project,
                                          @NotNull StudyProjectGenerator generator,
                                          @NotNull CourseInfo selectedCourse,
                                          @Nullable String moduleDir) {
  }

  default void createCourseModuleContent(@NotNull ModifiableModuleModel moduleModel,
                                         @NotNull Project project,
                                         @NotNull Course course,
                                         @Nullable String moduleDir) {
  }
}
{'fraction_non_alphanumeric': 0.06688839615668885, 'fraction_numerical': 0.0, 'mean_word_length': 2.7493074792243766, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 22, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7665639', 'n_tokens_mistral': 615, 'n_tokens_neox': 589, 'n_words': 142}