Генерация кода на основе шаблонов, которая отслеживает / объединяет изменения пользователя? - PullRequest
0 голосов
/ 03 октября 2011

Уже существует генератор шаблонов / кодов, который отслеживает изменения пользователя в его выводе?Я даже не позитивен, это имеет смысл - но космический кадет во мне думает, что нечто подобное может быть интересным видом отслеживания изменений, который более тесно интегрируется с кодом, чем SCM ...

Data.xml

<Classes>
 <Class>Class1</Class>
</Classes>

Шаблон

<# for(var c in XDocument.Load("Data.xml").Element("Classes").Elements("Class")) { #>
     class <#=c.Value#> {
       public <#=c.Value#>() {
         // <InsertPoint>
         // </InsertPoint>
       }
     }
<# } #>

Вывод

class Class1 {
  public Class1() {
    // <InsertPoint>
    // </InsertPoint>
  }
}

Изменение пользователя

class Class1 {
  public Class1() {
    // <InsertPoint>
    System.Console.WriteLine("I am Class1");
    // </InsertPoint>
  }
}

-> Шаблон изменяется примерно так:

<# for(var c in XDocument.Load("Data.xml").Element("Classes").Elements("Class")) { #>
class <#=c.Value#> {
  public <#=c.Value#>() {
  // <UserInsert id="1">
  System.Console.WriteLine("I am Class1");
  // </UserInsert>

  // <InsertPoint>
  // </InsertPoint>
  }
}
<# } #>

Ответы [ 2 ]

1 голос
/ 06 октября 2011

В data.xml у вас есть то, что обычно называют моделью.Будучи сделанным в XML, мы могли бы назвать это «древовидной моделью».Другими словами, вы применяете (выполняете) шаблоны в соответствии с предопределенной моделью.

Отслеживание пользовательских изменений в этом случае также можно назвать разработкой «туда-обратно»: двунаправленное изменение.

Проект ABSE (отказ от ответственности: я руководитель проекта) определяет подход генерации кода на основе модели, который очень близок к вашему запросу: он использует исполняемые шаблоны и генерирует код с помощью деревамодель (но это не XML).Но вместо того, чтобы обнаруживать изменения в коде, вы можете добавить свой собственный код непосредственно в модель, чтобы пропустить шаг «туда-обратно».

0 голосов
/ 03 октября 2011

Существуют инструменты для различий в документах XML.Если вы можете преобразовать свой код в ast, представленный в xml, вы можете применить эти инструменты к документу, а затем преобразовать его обратно в код.

...