[task] Vue transformation

Description

vuet is vue transformer task that allow to:

Vuet task parameters

Attribute Description Value Required
file input file .vue no
todir output dir yes
overwrite overwrite output file true by default no
Element Description Value Required
fileset fileset element no
templateset templates yes

Examples

Process vue file

bidjim

  • input file
<?xml version="1.0"?>
<bidji>
	<entity name="Menu">
		<property name="Menu1" type="Icon1"/>
		<property name="Menu2" type="Icon2"/>
		<property name="Menu3" type="Icon3"/>
	</entity>
</bidji>

build.xml

  • ant file:
<project name="bidji-vuet" xmlns:bj="antlib:org.bidji.taskdefs">
  <target name="fileset" description="gen fileset to vue(s)">       
    <bj:vuet todir="gen" overwrite="true"><!-- todir="dev" to rewrite source files -->
	  <fileset dir="datas">
		<include name="*.bidjim" />
	  </fileset>
	  <templateset dir="dev">
		<include name="js-vue/src/components/*.vue" />
	  </templateset>
	</bj:vuet>
  </target>
</project>

vue

  • vue js file
<!--VUET(MENU)-->
<template>
  <nav>
    <ul>
      <li v-for="item in navigation" :key="item.name">
        <a :href="item.href" >{{ item.name }}</a>
      </li>
    </ul>
  </nav>
  </template>
<!--VUET_GEN-->
  <script setup lang="ts">
  import { , Icon1, Icon2, Icon3 } from '@heroicons/vue/24/outline'

  const navigation = [
    { name: 'Menu1', href: '#', icon: Icon1, current: true },
    { name: 'Menu2', href: '#', icon: Icon2, current: false },
    { name: 'Menu3', href: '#', icon: Icon3, current: false },
  ]
  </script>
<!--/VUET_GEN-->
<!--#VUET
  [#assign entity = bidji.entity] 
  <script setup lang="ts">
  import { [#foreach property in entity.property], ${property.@type}[/#foreach] } from '@heroicons/vue/24/outline'
    
  const navigation = [
  [#foreach property in entity.property]
    { name: '${property.@name}', href: '#', icon: ${property.@type}, current: ${property?is_first?c} },
  [/#foreach]
  ]   
  </script>
/#VUET-->
<!--VUET_SRC-->