Introduce arguments in compact constructor
diff --git a/src/main/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructor.java b/src/main/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructor.java
index 9f0e269..e1dcd3e 100644
--- a/src/main/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructor.java
+++ b/src/main/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructor.java
@@ -16,7 +16,9 @@
 
 package org.yaml.snakeyaml.extensions.compactnotation;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -52,30 +54,36 @@
         if (!scalar.endsWith(")")) {
             return null;
         }
-        if (scalar.indexOf('=') < 0 || scalar.indexOf('(') < 0) {
+        if (scalar.indexOf('(') < 0) {
             return null;
         }
         Matcher m = FIRST_PATTERN.matcher(scalar);
         if (m.matches()) {
             String tag = m.group(1);
             String content = m.group(3);
+            CompactData data = new CompactData(tag);
+            if (content.length() == 0)
+                return data;
             String[] names = content.split("\\s*,\\s*");
             if (names.length == 0) {
                 return null;
             }
-            CompactData data = new CompactData(tag);
             for (int i = 0; i < names.length; i++) {
                 String section = names[i];
-                Matcher sm = PROPERTY_NAME_PATTERN.matcher(section);
-                if (sm.matches()) {
-                    String name = sm.group(1);
-                    String value = sm.group(2).trim();
-                    if ("".equals(value)) {
+                if (section.indexOf('=') < 0) {
+                    data.getArguments().add(section);
+                } else {
+                    Matcher sm = PROPERTY_NAME_PATTERN.matcher(section);
+                    if (sm.matches()) {
+                        String name = sm.group(1);
+                        String value = sm.group(2).trim();
+                        if ("".equals(value)) {
+                            return null;
+                        }
+                        data.getProperties().put(name, value);
+                    } else {
                         return null;
                     }
-                    data.getProperties().put(name, value);
-                } else {
-                    return null;
                 }
             }
             return data;
@@ -85,6 +93,7 @@
 
     class CompactData {
         private String prefix;
+        private List<String> arguments = new ArrayList<String>();
         private Map<String, String> properties = new HashMap<String, String>();
 
         public CompactData(String prefix) {
@@ -107,6 +116,14 @@
             this.properties = properties;
         }
 
+        public List<String> getArguments() {
+            return arguments;
+        }
+
+        public void setArguments(List<String> arguments) {
+            this.arguments = arguments;
+        }
+
         @Override
         public String toString() {
             return "CompactData: " + prefix + " " + properties;
diff --git a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructorTest.java b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructorTest.java
index 2e3301e..75a7c87 100644
--- a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructorTest.java
+++ b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructorTest.java
@@ -24,7 +24,6 @@
 

     public void testNoCompactData() {

         CompactConstructor flow = new CompactConstructor();

-        assertNull(flow.getCompactData("JFrame()"));

         assertNull(flow.getCompactData("scalar"));

         assertNull(flow.getCompactData("123"));

         assertNull(flow.getCompactData("(name=frame,title=My Frame)"));

@@ -35,7 +34,6 @@
         assertNull(flow.getCompactData("JFrame(name=frame,title=My Frame) "));

         assertNull(flow.getCompactData("JFrame(name=)"));

         assertNull(flow.getCompactData("JFrame(=name)"));

-        assertNull(flow.getCompactData("JFrame(name)"));

     }

 

     public void testGetCompactData1() {

@@ -70,4 +68,34 @@
         assertEquals("My Frame", data.getProperties().get("title"));

         assertEquals("123", data.getProperties().get("number"));

     }

+

+    public void testGetCompactData4() {

+        CompactConstructor flow = new CompactConstructor();

+        CompactData data = flow.getCompactData("JFrame(title)");

+        assertNotNull(data);

+        assertEquals("JFrame", data.getPrefix());

+        assertEquals(0, data.getProperties().size());

+        assertEquals(1, data.getArguments().size());

+        assertEquals("title", data.getArguments().get(0));

+    }

+

+    public void testGetCompactData5() {

+        CompactConstructor flow = new CompactConstructor();

+        CompactData data = flow.getCompactData("JFrame(id123, title, name=foo, alignment=center)");

+        assertNotNull(data);

+        assertEquals("JFrame", data.getPrefix());

+        assertEquals(2, data.getProperties().size());

+        assertEquals(2, data.getArguments().size());

+        assertEquals("id123", data.getArguments().get(0));

+        assertEquals("title", data.getArguments().get(1));

+    }

+

+    public void testGetCompactData6() {

+        CompactConstructor flow = new CompactConstructor();

+        CompactData data = flow.getCompactData("JFrame()");

+        assertNotNull(data);

+        assertEquals("JFrame", data.getPrefix());

+        assertEquals(0, data.getProperties().size());

+        assertEquals(0, data.getArguments().size());

+    }

 }

diff --git a/src/test/resources/compactnotation/container1.yaml b/src/test/resources/compactnotation/container1.yaml
index 398fd80..d1d7f65 100644
--- a/src/test/resources/compactnotation/container1.yaml
+++ b/src/test/resources/compactnotation/container1.yaml
@@ -1,4 +1,4 @@
-Container(name=parent, id=123):

+Container(title, name=parent, id=123):

   components:

       - Component(name=open, id=111)

       - Component(name=close, id=222)