<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>hexMachina - a powerful multi-modular MVC framework written in Haxe</title>
    <description>A powerful multi-modular MVC+S system written in Haxe</description>
    <link>http://hexmachina.org//</link>
    <atom:link href="http://hexmachina.org//feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Thu, 26 Jul 2018 12:03:04 +0000</pubDate>
    <lastBuildDate>Thu, 26 Jul 2018 12:03:04 +0000</lastBuildDate>
    <generator>Jekyll v3.7.3</generator>
    
      <item>
        <title>Haxe Summit 2018 - Consuming injections with minimal dependencies</title>
        <description>&lt;p&gt;Find below the video and slide for Francis’s talk about hexInject at Haxe Summit 2018 in Seattle.&lt;/p&gt;

&lt;h2 id=&quot;consuming-injections-with-minimal-dependencies&quot;&gt;Consuming injections with minimal dependencies&lt;/h2&gt;
&lt;p&gt;Managing dependencies is a big topic in application engineering. Francis in this talk will showcase some maintanable and performant solutions he’s using with haxe.&lt;/p&gt;

&lt;iframe width=&quot;853&quot; height=&quot;480&quot; src=&quot;https://www.youtube.com/embed/hphNp2LfsqY&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;iframe src=&quot;https://docs.google.com/presentation/d/1DYC_su2FL25LiF6oQ4zkSlwbaOru-UMswkpRVK3wByo/embed?start=false&amp;amp;loop=false&amp;amp;delayms=3000&quot; frameborder=&quot;0&quot; width=&quot;853&quot; height=&quot;508&quot; allowfullscreen=&quot;true&quot; mozallowfullscreen=&quot;true&quot; webkitallowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
</description>
        <pubDate>Sat, 05 May 2018 00:00:00 +0000</pubDate>
        <link>http://hexmachina.org//showcase/2018/05/05/summit-injections-with-minimal-dependencies.html</link>
        <guid isPermaLink="true">http://hexmachina.org//showcase/2018/05/05/summit-injections-with-minimal-dependencies.html</guid>
        
        <category>event</category>
        
        <category>video</category>
        
        <category>inject</category>
        
        <category>dsl</category>
        
        
        <category>Showcase</category>
        
      </item>
    
      <item>
        <title>Haxe Summit 2018 - A deep dive into hexUnit</title>
        <description>&lt;p&gt;Find below the video for Laurent’s talk about hexUnit at Haxe Summit 2018 in Seattle.&lt;/p&gt;

&lt;h2 id=&quot;a-deep-dive-into-hexunit&quot;&gt;A deep dive into hexUnit&lt;/h2&gt;
&lt;p&gt;During this presentation, we will see in detail all the possibilities offered by hexUnit. How to play with metadata, asserts, notifiers and asynchronous testing. hexUnit is the hexMachina’s Unit Test library.&lt;/p&gt;

&lt;iframe width=&quot;853&quot; height=&quot;480&quot; src=&quot;https://www.youtube.com/embed/JzItj1CYDjE&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;iframe src=&quot;https://drive.google.com/file/d/1vdlITXDfpy3_xjzyOUOZiBImGcxDyo9i/preview&quot; width=&quot;640&quot; height=&quot;480&quot;&gt;&lt;/iframe&gt;
</description>
        <pubDate>Thu, 03 May 2018 00:00:00 +0000</pubDate>
        <link>http://hexmachina.org//tutorial/2018/05/03/summit-hexunit.html</link>
        <guid isPermaLink="true">http://hexmachina.org//tutorial/2018/05/03/summit-hexunit.html</guid>
        
        <category>event</category>
        
        <category>video</category>
        
        <category>unit-test</category>
        
        
        <category>Tutorial</category>
        
      </item>
    
      <item>
        <title>Haxe Summit 2017 - A deep dive into hexInject</title>
        <description>&lt;p&gt;Find below the video for Stepan’s workshop about hexInject at Haxe Summit 2017 in Amsterdam.&lt;/p&gt;

&lt;h2 id=&quot;a-deep-dive-into-hexinject&quot;&gt;A deep dive into hexInject&lt;/h2&gt;
&lt;p&gt;Have you ever struggled to maintain a highly coupled monolithic application? Worry no more and discover all possibilities of dependency mappings and injections with Injector from hexInject and see how to wire everything together in unique “flow” flavor of hexDSL. Basic Haxe knowledge necessary, familiarity with Rick and Morty optional.&lt;/p&gt;

&lt;p&gt;Workshop sources: &lt;a href=&quot;https://github.com/DoclerLabs/hexWorkshop/tree/master/hexInject&quot;&gt;DoclerLabs/hexWorkshop/hexInject&lt;/a&gt;&lt;/p&gt;

&lt;iframe width=&quot;853&quot; height=&quot;480&quot; src=&quot;https://www.youtube.com/embed/a9cBRLcnwdI&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
</description>
        <pubDate>Fri, 15 Sep 2017 00:00:00 +0000</pubDate>
        <link>http://hexmachina.org//tutorial/2017/09/15/summit-workshop-hexinject.html</link>
        <guid isPermaLink="true">http://hexmachina.org//tutorial/2017/09/15/summit-workshop-hexinject.html</guid>
        
        <category>event</category>
        
        <category>video</category>
        
        <category>inject</category>
        
        
        <category>Tutorial</category>
        
      </item>
    
      <item>
        <title>Haxe Summit 2017 - A deep dive into hexDSL</title>
        <description>&lt;p&gt;Find below the video for Laurent’s workshop about hexDSL at Haxe Summit 2017 in Amsterdam.&lt;/p&gt;

&lt;h2 id=&quot;a-deep-dive-into-hexdsl&quot;&gt;A deep dive into hexDSL&lt;/h2&gt;
&lt;p&gt;Have you ever struggled to maintain a highly coupled monolithic application? Worry no more and discover all possibilities of dependency mappings and injections with Injector from hexInject and see how to wire everything together in unique “flow” flavor of hexDSL. Basic Haxe knowledge necessary, familiarity with Rick and Morty optional.&lt;/p&gt;

&lt;p&gt;Workshop sources: &lt;a href=&quot;https://github.com/DoclerLabs/hexWorkshop/tree/master/hexDSL&quot;&gt;DoclerLabs/hexWorkshop/hexDSL&lt;/a&gt;&lt;/p&gt;

&lt;iframe width=&quot;853&quot; height=&quot;480&quot; src=&quot;https://www.youtube.com/embed/78__QehYjq0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
</description>
        <pubDate>Fri, 15 Sep 2017 00:00:00 +0000</pubDate>
        <link>http://hexmachina.org//tutorial/2017/09/15/summit-workshop-hexdsl.html</link>
        <guid isPermaLink="true">http://hexmachina.org//tutorial/2017/09/15/summit-workshop-hexdsl.html</guid>
        
        <category>event</category>
        
        <category>video</category>
        
        <category>dsl</category>
        
        
        <category>Tutorial</category>
        
      </item>
    
      <item>
        <title>Haxe Summit 2017 - DSL, mon amour!</title>
        <description>&lt;p&gt;Find below the video for Francis’s talk at Haxe Summit 2017 in Amsterdam.&lt;/p&gt;

&lt;h2 id=&quot;dsl-mon-amour&quot;&gt;DSL, mon amour!&lt;/h2&gt;
&lt;p&gt;DSLs are small languages, focused on a particular aspect of your software system. You can’t build a whole program with a DSL, but you often use multiple DSLs in a system mainly written in a general purpose language.&lt;/p&gt;

&lt;p&gt;This presentation is split in 3 parts presenting:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Advantages to use internal/external DSLs instead of traditional libraries to improve programmer productivity and communication between team members.&lt;/li&gt;
  &lt;li&gt;Case study of a real world DSL able to be parsed/executed at runtime and compile time.&lt;/li&gt;
  &lt;li&gt;How to use Haxe language features to develop powerful DSL toolchain with different grammars and code generation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Who is this presentation for:&lt;/p&gt;

&lt;p&gt;It’s targeted to every developer who wants to have a nice introduction about DSL power in the application world, and have a first taste of Haxe macros black magic.&lt;/p&gt;

&lt;iframe width=&quot;853&quot; height=&quot;480&quot; src=&quot;https://www.youtube.com/embed/buAcjaK6IbM&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
</description>
        <pubDate>Wed, 13 Sep 2017 00:00:00 +0000</pubDate>
        <link>http://hexmachina.org//news/2017/09/13/summit-dsl-mon-amour.html</link>
        <guid isPermaLink="true">http://hexmachina.org//news/2017/09/13/summit-dsl-mon-amour.html</guid>
        
        <category>event</category>
        
        <category>video</category>
        
        <category>dsl</category>
        
        
        <category>News</category>
        
      </item>
    
      <item>
        <title>0.28.0 - @parser and code.clone()</title>
        <description>&lt;p&gt;Let’s highlight some new feature on this new release.&lt;/p&gt;

&lt;h3 id=&quot;custom-parser-can-be-declared-in-flow-dsl-with-parser-metadata&quot;&gt;Custom parser can be declared in flow DSL with &lt;code class=&quot;highlighter-rouge&quot;&gt;@parser&lt;/code&gt; metadata&lt;/h3&gt;
&lt;p&gt;Added in &lt;code class=&quot;highlighter-rouge&quot;&gt;0.24.0&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;custom parser&lt;/code&gt; can now be directly added in DSL file with &lt;code class=&quot;highlighter-rouge&quot;&gt;@parser&lt;/code&gt; flow keyword. &lt;a href=&quot;https://github.com/DoclerLabs/hexDSL/tree/master/src/hex/compiletime/flow/parser/custom&quot;&gt;Few custom parser examples in hexDSL&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-Haxe&quot;&gt;@context( name = 'applicationContext' )
@parser( hex.compiletime.flow.parser.custom.AddParser )
{
	s = add( &quot;hello&quot;, space, &quot;world&quot;, space, &quot;!&quot; );
	space =  &quot; &quot;;
	
	i = add( 6, five );
	five = 5;
	
	p = add( p1, new hex.structures.Point( 3, 4 ), p2 );
	p1 = new hex.structures.Point( 5, 5 );
	p2 = new hex.structures.Point( 3, 4 );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id=&quot;code-compilation-can-be-cloned-with-unique-assembler-reference&quot;&gt;Code compilation can be cloned with unique assembler reference&lt;/h3&gt;
&lt;p&gt;Requested for a long time, we can now run the same application few times in the same place without scope problems. ApplicationAssembler is now used as a unique key. More than that, we can manually duplicate DSL with the new &lt;code class=&quot;highlighter-rouge&quot;&gt;clone&lt;/code&gt; method.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-haxe&quot;&gt;var code = StaticFlowCompiler.compile( assembler, &quot;context/flow/dsl.flow&quot; );
code.execute();
		
var clonedCode = code.clone( new ApplicationAssembler() );
clonedCode.execute();

Assert.isInstanceOf( code.locator.instance, MockClassWithoutArgument );
Assert.isInstanceOf( clonedCode .locator.instance, MockClassWithoutArgument );
		
Assert.notEquals( code.locator.instance, clonedCode .locator.instance );
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id=&quot;to-go-further&quot;&gt;To go further&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/DoclerLabs/hexMachina/releases/tag/0.28.0&quot;&gt;0.28.0 changlog&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://hexmachina.org/docs/getstarted/&quot;&gt;How to get started?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Tue, 08 Aug 2017 00:00:00 +0000</pubDate>
        <link>http://hexmachina.org//news/2017/08/08/hexmachina-0.28.0.html</link>
        <guid isPermaLink="true">http://hexmachina.org//news/2017/08/08/hexmachina-0.28.0.html</guid>
        
        <category>release</category>
        
        <category>flow</category>
        
        <category>dsl</category>
        
        
        <category>News</category>
        
      </item>
    
      <item>
        <title>flow - @type and @lazy</title>
        <description>&lt;p&gt;Let’s highlight two new features in flow arrived with hexMachina &lt;code class=&quot;highlighter-rouge&quot;&gt;0.27.0&lt;/code&gt;.&lt;/p&gt;

&lt;h3 id=&quot;force-typing-in-flow-dsl-with-new-type&quot;&gt;Force typing in flow DSL with new &lt;code class=&quot;highlighter-rouge&quot;&gt;@type&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;By default, every object instancied in DSL use his own type as property type. With the new &lt;code class=&quot;highlighter-rouge&quot;&gt;@type&lt;/code&gt; flow keyword is possible to apply another type to the property. Not to be confused with &lt;code class=&quot;highlighter-rouge&quot;&gt;@map_type&lt;/code&gt; use to map object in ApplicationContext injector.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-haxe&quot;&gt;@context()
{
    @type( 'hex.log.ILogger' )
    logger = new hex.log.Logger( loggerContext, &quot;myLogger&quot;);

    loggerContext = hex.log.LoggerContext.getContext();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Is equal to that in haxe :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-haxe&quot;&gt;class hex.context.applicationContext implements hex.context.IapplicationContext_0 {

	public var loggerContext:hex.log.LoggerContext;
	public var logger:hex.log.ILogger;

	public function m_dcea6fa1359cfeff3f1f1e4264791aa7() {
		var loggerContext = hex.log.LoggerContext.getContext();
		this.loggerContext = loggerContext;
		var logger = new hex.log.Logger(loggerContext, &quot;myLogger&quot;);
		this.logger = logger;
	}
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id=&quot;define-lazy-instanciation-in-flow-dsl-with-lazy&quot;&gt;Define lazy instanciation in flow DSL with &lt;code class=&quot;highlighter-rouge&quot;&gt;@lazy&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Declaration with &lt;code class=&quot;highlighter-rouge&quot;&gt;@lazy&lt;/code&gt; metadata will not be executed until is used somewhere. 
context/flow/primitives/lazyInt.flow - &lt;a href=&quot;https://github.com/DoclerLabs/hexDSL/blob/201058ad04b70e34268d23d9522b9f18c7aea1c0/test/context/flow/primitives/lazyInt.flow&quot;&gt;link&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-haxe&quot;&gt;@context( name = 'applicationContext' )
{
	@lazy
	i = hex.mock.LazyProvider.provide( -3 );
	
	@lazy
	o = new hex.mock.LazyClass( 'test' );
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;test/hex/mock/LazyClass.hx - &lt;a href=&quot;https://github.com/DoclerLabs/hexDSL/blob/201058ad04b70e34268d23d9522b9f18c7aea1c0/test/hex/mock/LazyClass.hx&quot;&gt;link&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-haxe&quot;&gt;class LazyClass 
{
	public static var value : Any;
	
	public function new( o : Any ) 
	{
		LazyClass.value = o;
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;test/hex/mock/LazyProvider.hx - &lt;a href=&quot;https://github.com/DoclerLabs/hexDSL/blob/201058ad04b70e34268d23d9522b9f18c7aea1c0/test/hex/mock/LazyProvider.hx&quot;&gt;link&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-haxe&quot;&gt;class LazyProvider 
{
	public static var value : Any;
	
	public function new() {}
	
	public static function provide&amp;lt;T&amp;gt;( o : T ) : T
	{
		LazyProvider.value = o;
		return o;
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;@Test( “test building lazy primitive” ) - &lt;a href=&quot;https://github.com/DoclerLabs/hexDSL/blob/201058ad04b70e34268d23d9522b9f18c7aea1c0/test/hex/compiletime/flow/BasicStaticFlowCompilerTest.hx#L1188-L1203&quot;&gt;link&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-haxe&quot;&gt;@Test( &quot;test building lazy primitive&quot; )
public function testBuildingLazyInt() : Void
{
	var code = BasicStaticFlowCompiler.compile( this._myApplicationAssembler, &quot;context/flow/primitives/lazyInt.flow&quot;, &quot;BasicStaticFlowCompiler_testBuildingLazyInt&quot; );
	LazyProvider.value = null;
	LazyClass.value = null;
	code.execute();
	
	Assert.isNull( LazyProvider.value );
	Assert.equals( -3, code.locator.i );
	Assert.equals( -3, LazyProvider.value );
	
	Assert.isNull( LazyClass.value );
	Assert.isNotNull( code.locator.o );
	Assert.equals( 'test', LazyClass.value );
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;to-go-further&quot;&gt;To go further&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/DoclerLabs/hexMachina/releases/tag/0.27.0&quot;&gt;0.27.0 changlog&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://hexmachina.org/docs/getstarted/&quot;&gt;How to get started?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Sun, 02 Jul 2017 00:00:00 +0000</pubDate>
        <link>http://hexmachina.org//news/2017/07/02/hexmachina-0.27.0.html</link>
        <guid isPermaLink="true">http://hexmachina.org//news/2017/07/02/hexmachina-0.27.0.html</guid>
        
        <category>release</category>
        
        <category>flow</category>
        
        <category>dsl</category>
        
        
        <category>News</category>
        
      </item>
    
      <item>
        <title>IDependencyOwner, check dependency injection at compiletime</title>
        <description>&lt;p&gt;Let’s highlight one new feature arrived with hexMachina &lt;code class=&quot;highlighter-rouge&quot;&gt;0.22.0.&lt;/code&gt;&lt;/p&gt;

&lt;h3 id=&quot;hexdimappingidependencyowner&quot;&gt;hex.di.mapping.IDependencyOwner&lt;/h3&gt;
&lt;p&gt;With this new feature is possible to check injector dependencies at compiletime. 
With &lt;code class=&quot;highlighter-rouge&quot;&gt;@Dependency&lt;/code&gt; metadata is possible to declare mapping dependencies on classes that implements &lt;code class=&quot;highlighter-rouge&quot;&gt;hex.di.mapping.IDependencyOwner&lt;/code&gt;,&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-haxe&quot;&gt;@Dependency( var _:String )
@Dependency( var name:InterfaceWithGeneric&amp;lt;String&amp;gt; )
@Dependency( var _:Void-&amp;gt;Void, hex.di.mock.MockConstants.NAME_ONE )
class DependencyOwner implements hex.di.mapping.IDependencyOwner
{
	var _injector = new Injector();
	
	public function new() {}
	
	public function getInjector() : IDependencyInjector return this._injector;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In this example, &lt;code class=&quot;highlighter-rouge&quot;&gt;DependencyOwner&lt;/code&gt; request mapping of :&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;fromType&lt;/code&gt;&lt;/th&gt;
      &lt;th&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;withName&lt;/code&gt;&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;String&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;no name&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;InterfaceWithGeneric&amp;lt;String&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;“name”&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Void-&amp;gt;Void&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;the value of &lt;code class=&quot;highlighter-rouge&quot;&gt;hex.di.mock.MockConstants.NAME_ONE&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Mapping Could be provided by code with static Extension &lt;code class=&quot;highlighter-rouge&quot;&gt;hex.di.util.MappingDefinitionUtil.addDefinition&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-haxe&quot;&gt;var f2 = function() {};
var mapping : MappingDefinition = { fromType: &quot;String&quot;, toValue: &quot;test&quot; };
var mappings : Array&amp;lt;MappingDefinition&amp;gt; = [
	{ fromType: &quot;hex.di.mock.types.InterfaceWithGeneric&amp;lt;String&amp;gt;&quot;, toClass: ClazzWithGeneric, withName: &quot;name&quot; },
	{ fromType: &quot;Void-&amp;gt;Void&quot;, toValue: f2, withName:hex.di.mock.MockConstants.NAME_ONE }
];

var dependencyOwner = new DependencyOwner();
dependencyOwner.addDefinition( [mapping].concat( mappings ) );

var injector = dependencyOwner.getInjector();
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Or in DSL through the constructor like :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-haxe&quot;&gt;@Dependency( var _			:String )
@Dependency( var id			:Interface )
@Dependency( var anotherID	:Interface )
class AnotherDependenciesOwner implements IDependencyOwner
{
	var _injector = new Injector();
	
	public function new( mapping : MappingDefinition, mappings : Array&amp;lt;MappingDefinition&amp;gt; ) {}
	
	public function getInjector() : IDependencyInjector return this._injector;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-haxe&quot;&gt;@context( name = 'applicationContext' )
{
	s = &quot;test&quot;;
	mapping1 = mapping({fromType: &quot;String&quot;, toValue: s});
	mapping2 = mapping( {fromType: &quot;hex.mock.Interface&quot;, toValue: new hex.mock.Clazz(), withName: &quot;anotherID&quot;} );
	
	mappings = new Array&amp;lt;hex.di.mapping.MappingDefinition&amp;gt;
	(
		mapping2,
		mapping( {fromType: &quot;hex.mock.Interface&quot;, toClass: hex.mock.Clazz, withName: &quot;id&quot;, asSingleton:true} )
	);

	owner = new AnotherDependenciesOwner( mapping1, mappings );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id=&quot;to-go-further&quot;&gt;To go further&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/DoclerLabs/hexMachina/releases/tag/0.22.0&quot;&gt;0.22.0 changlog&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://hexmachina.org/docs/getstarted/&quot;&gt;How to get started?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Tue, 30 May 2017 00:00:00 +0000</pubDate>
        <link>http://hexmachina.org//news/2017/05/30/hexmachina-0.22.0.html</link>
        <guid isPermaLink="true">http://hexmachina.org//news/2017/05/30/hexmachina-0.22.0.html</guid>
        
        <category>release</category>
        
        <category>inject</category>
        
        <category>dsl</category>
        
        
        <category>News</category>
        
      </item>
    
      <item>
        <title>IAnnotationReplace - use constant in annotation</title>
        <description>&lt;p&gt;Let’s highlight one new feature on release &lt;code class=&quot;highlighter-rouge&quot;&gt;0.21.0&lt;/code&gt;.&lt;/p&gt;

&lt;h3 id=&quot;iannotationreplace&quot;&gt;IAnnotationReplace&lt;/h3&gt;

&lt;p&gt;Utility interface that allows you to replace expressions in annotation with their values. It’s especially handy for keeping injection names in classes with constants.&lt;/p&gt;

&lt;p&gt;Build macro attached to &lt;code class=&quot;highlighter-rouge&quot;&gt;IAnnotationReplace&lt;/code&gt; will cause following change:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-haxe&quot;&gt;@Inject(MyConstants.NAME_ONE)
public var injectedOne:String;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;becomes&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-haxe&quot;&gt;@Inject(&quot;one&quot;)
public var injectedOne:String;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Expressions that are already constants will remain untouched so &lt;code class=&quot;highlighter-rouge&quot;&gt;@Inject(&quot;one&quot;)&lt;/code&gt; will stay the same. That also applies to combinations of expressions so &lt;code class=&quot;highlighter-rouge&quot;&gt;@Inject(MyConstants.NAME_ONE, &quot;two&quot;)&lt;/code&gt; changes to &lt;code class=&quot;highlighter-rouge&quot;&gt;@Inject(&quot;one&quot;, &quot;two&quot;)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Currently supported values of expressions:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;String&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Bool&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Int&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Currently supported expressions that will be replaced:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Constant in current class
    &lt;ul&gt;
      &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;@Meta(TEST)&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Constant in different class
    &lt;ul&gt;
      &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;@Meta(MyClass.TEST)&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Constant in different class (with reference using FQCN)
    &lt;ul&gt;
      &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;@Meta(my.pack.MyClass.TEST)&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that the only expressions that are replaced are &lt;code class=&quot;highlighter-rouge&quot;&gt;[public] static var&lt;/code&gt;. Non-static variables are not being searched so they won’t be found.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important: If used with &lt;code class=&quot;highlighter-rouge&quot;&gt;IInjectorContainer&lt;/code&gt; the order matters:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Only this order of implementation will work because of the macro execution order - fix will come soon:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;class MyClass implements IInjectorContainer implements IAnnotationReplace &lt;/code&gt;&lt;/p&gt;

&lt;h3 id=&quot;to-go-further&quot;&gt;To go further&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/DoclerLabs/hexMachina/releases/tag/0.21.0&quot;&gt;0.21.0 changlog&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://hexmachina.org/docs/getstarted/&quot;&gt;How to get started?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Tue, 16 May 2017 00:00:00 +0000</pubDate>
        <link>http://hexmachina.org//news/2017/05/16/hexmachina-0.21.0.html</link>
        <guid isPermaLink="true">http://hexmachina.org//news/2017/05/16/hexmachina-0.21.0.html</guid>
        
        <category>release</category>
        
        <category>annotation</category>
        
        
        <category>News</category>
        
      </item>
    
      <item>
        <title>Drop haxe 3.2.1 support</title>
        <description>&lt;p&gt;It’s time to say thank you and goodbye to Haxe &lt;code class=&quot;highlighter-rouge&quot;&gt;3.2.1&lt;/code&gt;, hexMachina minimal haxe support is now &lt;code class=&quot;highlighter-rouge&quot;&gt;3.4.0&lt;/code&gt;!&lt;/p&gt;

&lt;h3 id=&quot;to-go-further&quot;&gt;To go further&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/DoclerLabs/hexMachina/releases/tag/0.18.0&quot;&gt;0.18.0 changlog&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://hexmachina.org/docs/getstarted/&quot;&gt;How to get started?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Tue, 21 Mar 2017 00:00:00 +0000</pubDate>
        <link>http://hexmachina.org//news/2017/03/21/hexmachina-0.18.0.html</link>
        <guid isPermaLink="true">http://hexmachina.org//news/2017/03/21/hexmachina-0.18.0.html</guid>
        
        <category>release</category>
        
        
        <category>News</category>
        
      </item>
    
  </channel>
</rss>
