mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 20:52:45 +00:00 
			
		
		
		
	 89523f70cf
			
		
	
	
		89523f70cf
		
	
	
	
	
		
			
			There is quite a lot to be done here so this is just a first pass at
number formatting. Decimal and percent formatting are mostly working,
but only for standard and compact notation (engineering and scientific
notation are not implemented here). Currency formatting is parsed, but
there is more work to be done to handle e.g. using symbols instead of
currency codes ("$" instead of "USD"), and putting spaces around the
currency symbol ("USD 2.00" instead of "USD2.00").
		
	
			
		
			
				
	
	
		
			33 lines
		
	
	
	
		
			794 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			794 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2021, Tim Flynn <trflynn89@pm.me>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <LibJS/Forward.h>
 | |
| #include <LibJS/Runtime/Completion.h>
 | |
| #include <LibJS/Runtime/NativeFunction.h>
 | |
| 
 | |
| namespace JS::Intl {
 | |
| 
 | |
| class NumberFormatFunction final : public NativeFunction {
 | |
|     JS_OBJECT(NumberFormatFunction, NativeFunction);
 | |
| 
 | |
| public:
 | |
|     static NumberFormatFunction* create(GlobalObject&, NumberFormat&);
 | |
| 
 | |
|     explicit NumberFormatFunction(NumberFormat&, Object& prototype);
 | |
|     virtual ~NumberFormatFunction() override = default;
 | |
|     virtual void initialize(GlobalObject&) override;
 | |
| 
 | |
|     virtual ThrowCompletionOr<Value> call() override;
 | |
| 
 | |
| private:
 | |
|     virtual void visit_edges(Visitor&) override;
 | |
| 
 | |
|     NumberFormat& m_number_format; // [[NumberFormat]]
 | |
| };
 | |
| 
 | |
| }
 |