Преглед на файлове

LibJS: Implement ConsoleObject::count() as a Console::count() wrapper

Also implement ConsoleObject::count_clear() as a wrapper for
Console::count_clear()
Emanuele Torre преди 5 години
родител
ревизия
e9c7d4524a
променени са 3 файла, в които са добавени 37 реда и са изтрити 28 реда
  1. 27 0
      Libraries/LibJS/Console.cpp
  2. 3 0
      Libraries/LibJS/Console.h
  3. 7 28
      Libraries/LibJS/Runtime/ConsoleObject.cpp

+ 27 - 0
Libraries/LibJS/Console.cpp

@@ -24,7 +24,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <AK/String.h>
 #include <LibJS/Console.h>
+#include <stdio.h>
 
 namespace JS {
 
@@ -33,4 +35,29 @@ Console::Console(Interpreter& interpreter)
 {
 }
 
+unsigned Console::count(String label)
+{
+    auto counter_value = m_counters.get(label);
+    if (!counter_value.has_value()) {
+        printf("%s: 1\n", label.characters());
+        m_counters.set(label, 1);
+        return 1;
+    }
+
+    auto new_counter_value = counter_value.value() + 1;
+    printf("%s: %d\n", label.characters(), new_counter_value);
+    m_counters.set(label, new_counter_value);
+    return new_counter_value;
+}
+
+bool Console::count_reset(String label)
+{
+    if (!m_counters.contains(label))
+        return false;
+
+    m_counters.remove(label);
+    printf("%s: 0\n", label.characters());
+    return true;
+}
+
 }

+ 3 - 0
Libraries/LibJS/Console.h

@@ -43,6 +43,9 @@ public:
 
     HashMap<String, unsigned>& counters() { return m_counters; }
 
+    unsigned count(String label = "default");
+    bool count_reset(String label = "default");
+
 private:
     Interpreter& m_interpreter;
 

+ 7 - 28
Libraries/LibJS/Runtime/ConsoleObject.cpp

@@ -28,7 +28,7 @@
 
 #include <AK/FlyString.h>
 #include <AK/Function.h>
-#include <AK/HashMap.h>
+#include <LibJS/Console.h>
 #include <LibJS/Interpreter.h>
 #include <LibJS/Runtime/ConsoleObject.h>
 #include <LibJS/Runtime/GlobalObject.h>
@@ -115,40 +115,19 @@ Value ConsoleObject::trace(Interpreter& interpreter)
 
 Value ConsoleObject::count(Interpreter& interpreter)
 {
-    String counter_name;
-    if (!interpreter.argument_count())
-        counter_name = "default";
+    if (interpreter.argument_count())
+        interpreter.console().count(interpreter.argument(0).to_string());
     else
-        counter_name = interpreter.argument(0).to_string();
-
-    auto& counters = interpreter.console().counters();
-    auto counter_value = counters.get(counter_name);
-
-    if (counter_value.has_value()) {
-        printf("%s: %d\n", counter_name.characters(), counter_value.value() + 1);
-        counters.set(counter_name, counter_value.value() + 1);
-    } else {
-        printf("%s: 1\n", counter_name.characters());
-        counters.set(counter_name, 1);
-    }
+        interpreter.console().count();
     return js_undefined();
 }
 
 Value ConsoleObject::count_reset(Interpreter& interpreter)
 {
-    String counter_name;
-    if (!interpreter.argument_count())
-        counter_name = "default";
+    if (interpreter.argument_count())
+        interpreter.console().count_reset(interpreter.argument(0).to_string());
     else
-        counter_name = interpreter.argument(0).to_string();
-
-    auto& counters = interpreter.console().counters();
-
-    if (counters.contains(counter_name)) {
-        counters.remove(counter_name);
-        printf("%s: 0\n", counter_name.characters());
-    }
-
+        interpreter.console().count_reset();
     return js_undefined();
 }